&НаКлиенте
Перем ЗакрытиеФормыПодтверждено, ПредставленияЗаголовковРеквизитов;

#Область Процедуры_и_функции

#Область Основные
&НаСервере
Процедура СравнитьДанныеНаСервере(СтруктураПараметровОтКлиента, ПредставленияЗаголовковРеквизитов, ТекстОшибок)

	//Если источник А - файл, хранящийся на клиентском компьютере
	Если Объект.ТипБазыА = 3 И Объект.ПодключениеКВнешнейБазеАУстройствоХраненияФайла = 1 Тогда
		//Сохранение пути к исходному файлу
		ПутьКФайлуАНаКлиенте = Объект.ПодключениеКВнешнейБазеАПутьКФайлу;
		//Создание временного файла на сервере
		ФайлА = ПолучитьИзВременногоХранилища(СтруктураПараметровОтКлиента.АдресВременногоХранилищаФайлаА); 
		ПутьКФайлуАНаСервере = ПолучитьИмяВременногоФайла(Объект.ПодключениеКВнешнейБазеАФорматФайла);
		ФайлА.Записать(ПутьКФайлуАНаСервере);
		Объект.ПодключениеКВнешнейБазеАПутьКФайлу = ПутьКФайлуАНаСервере;
	КонецЕсли;
	
	//Если источник Б - файл, хранящийся на клиентском компьютере
	Если Объект.ТипБазыБ = 3 И Объект.ПодключениеКВнешнейБазеБУстройствоХраненияФайла = 1 Тогда
		//Сохранение пути к исходному файлу
		ПутьКФайлуБНаКлиенте = Объект.ПодключениеКВнешнейБазеБПутьКФайлу;
		//Создание временного файла на сервере
		ФайлБ = ПолучитьИзВременногоХранилища(СтруктураПараметровОтКлиента.АдресВременногоХранилищаФайлаБ); 
		ПутьКФайлуБНаСервере = ПолучитьИмяВременногоФайла(Объект.ПодключениеКВнешнейБазеБФорматФайла);
		ФайлБ.Записать(ПутьКФайлуБНаСервере);
		Объект.ПодключениеКВнешнейБазеБПутьКФайлу = ПутьКФайлуБНаСервере;
	КонецЕсли;
	
	//Сравнение
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	ОбработкаОбъект.ОбновитьДанныеПериода();
	ОбработкаОбъект.СравнитьДанныеНаСервере(ТекстОшибок);
	ПредставленияЗаголовковРеквизитов = ОбработкаОбъект.ПредставленияЗаголовковРеквизитов;
	ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
	
	Для СчетчикРеквизитов = 1 По ЧислоРеквизитов Цикл 
		Элементы["РезультатРеквизитА" + СчетчикРеквизитов].Заголовок = ПредставленияЗаголовковРеквизитов["А" + СчетчикРеквизитов];
		Элементы["РезультатРеквизитБ" + СчетчикРеквизитов].Заголовок = ПредставленияЗаголовковРеквизитов["Б" + СчетчикРеквизитов];
	КонецЦикла;
	
	//Если источник А - файл, хранящийся на клиентском компьютере
	Если Объект.ТипБазыА = 3 И Объект.ПодключениеКВнешнейБазеАУстройствоХраненияФайла = 1 Тогда
		//Удаление временного файла на сервере
		Попытка
			УдалитьФайлы(Объект.ПодключениеКВнешнейБазеАПутьКФайлу);
		Исключение КонецПопытки;
		//Восстановление пути к исходному файлу
		Объект.ПодключениеКВнешнейБазеАПутьКФайлу = ПутьКФайлуАНаКлиенте;
	КонецЕсли;
	
	//Если источник Б - файл, хранящийся на клиентском компьютере
	Если Объект.ТипБазыБ = 3 И Объект.ПодключениеКВнешнейБазеБУстройствоХраненияФайла = 1 Тогда
		//Удаление временного файла на сервере
		Попытка
			УдалитьФайлы(Объект.ПодключениеКВнешнейБазеБПутьКФайлу);
		Исключение КонецПопытки;
		//Восстановление пути к исходному файлу
		Объект.ПодключениеКВнешнейБазеБПутьКФайлу = ПутьКФайлуБНаКлиенте;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СравнитьДанныеНаКлиенте()
	
	ТекстОшибок = "";
	СтруктураПараметровНаКлиенте = Новый Структура;
	СтруктураПараметровНаКлиенте.Вставить("АдресВременногоХранилищаФайлаА", "");
	СтруктураПараметровНаКлиенте.Вставить("АдресВременногоХранилищаФайлаБ", "");
	
	СравнитьДанныеНаКлиентеПередатьФайлА(СтруктураПараметровНаКлиенте, ТекстОшибок);
		
КонецПроцедуры

&НаКлиенте
Процедура СравнитьДанныеНаКлиентеПередатьФайлА(СтруктураПараметровНаКлиенте, ТекстОшибок)
	
	//Передача файла А с клиента на сервер
	Если Объект.ТипБазыА = 3 И Объект.ПодключениеКВнешнейБазеАУстройствоХраненияФайла = 1 Тогда
		АдресВременногоХранилищаФайлаА = "";
		НачатьПомещениеФайла(Новый ОписаниеОповещения("СравнитьДанныеНаКлиентеПередатьФайлАЗавершение", ЭтаФорма, Новый Структура("СтруктураПараметровНаКлиенте, ТекстОшибок", СтруктураПараметровНаКлиенте, ТекстОшибок)), АдресВременногоХранилищаФайлаА,Объект.ПодключениеКВнешнейБазеАПутьКФайлу,Ложь);
	Иначе
		СравнитьДанныеНаКлиентеПередатьФайлБ(СтруктураПараметровНаКлиенте, ТекстОшибок);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СравнитьДанныеНаКлиентеПередатьФайлАЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
	
	СтруктураПараметровНаКлиенте = ДополнительныеПараметры.СтруктураПараметровНаКлиенте;
	ТекстОшибок = ДополнительныеПараметры.ТекстОшибок;

	Если Результат Тогда
		СтруктураПараметровНаКлиенте.АдресВременногоХранилищаФайлаА = Адрес;
		СравнитьДанныеНаКлиентеПередатьФайлБ(СтруктураПараметровНаКлиенте, ТекстОшибок);
	Иначе
		ТекстОшибок = "Не удалось поместить во временное хранилище файл А: """ + Объект.ПодключениеКВнешнейБазеАПутьКФайлу + """";
		Сообщить(Формат(ТекущаяДата(),"ДЛФ=DT") + ": " + ТекстОшибок);
		Возврат;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СравнитьДанныеНаКлиентеПередатьФайлБ(СтруктураПараметровНаКлиенте, ТекстОшибок)
	
	//Передача файла Б с клиента на сервер
	Если Объект.ТипБазыБ = 3 И Объект.ПодключениеКВнешнейБазеБУстройствоХраненияФайла = 1 Тогда
		АдресВременногоХранилищаФайлаБ = "";
		НачатьПомещениеФайла(Новый ОписаниеОповещения("СравнитьДанныеНаКлиентеПередатьФайлБЗавершение", ЭтаФорма, Новый Структура("СтруктураПараметровНаКлиенте, ТекстОшибок", СтруктураПараметровНаКлиенте, ТекстОшибок)), АдресВременногоХранилищаФайлаБ,Объект.ПодключениеКВнешнейБазеБПутьКФайлу,Ложь);
		Возврат;
	Иначе
		СравнитьДанныеНаКлиентеЗавершение(СтруктураПараметровНаКлиенте, ТекстОшибок);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СравнитьДанныеНаКлиентеПередатьФайлБЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
	
	СтруктураПараметровНаКлиенте = ДополнительныеПараметры.СтруктураПараметровНаКлиенте;
	ТекстОшибок = ДополнительныеПараметры.ТекстОшибок;
	
	Если Результат Тогда
		СтруктураПараметровНаКлиенте.АдресВременногоХранилищаФайлаБ = Адрес;			
	Иначе
		ТекстОшибок = "Не удалось поместить во временное хранилище файл Б: """ + Объект.ПодключениеКВнешнейБазеБПутьКФайлу + """";
		Сообщить(Формат(ТекущаяДата(),"ДЛФ=DT") + ": " + ТекстОшибок);
		Возврат;
	КонецЕсли;
	
	СравнитьДанныеНаКлиентеЗавершение(СтруктураПараметровНаКлиенте, ТекстОшибок);

КонецПроцедуры

&НаКлиенте
Процедура СравнитьДанныеНаКлиентеЗавершение(СтруктураПараметровНаКлиенте, ТекстОшибок)
	
	СравнитьДанныеНаСервере(СтруктураПараметровНаКлиенте, ПредставленияЗаголовковРеквизитов, ТекстОшибок);
	Если Не ПустаяСтрока(ТекстОшибок) Тогда
		Сообщить(Формат(ТекущаяДата(),"ДЛФ=DT") + ": " + ТекстОшибок);
	КонецЕсли; 
	
	Элементы.ГруппаОсновная.ТекущаяСтраница = Элементы.ГруппаРезультатСравнения;
	ОбновитьВидимостьДоступностьЭлементовФормы();

КонецПроцедуры

&НаСервере
Процедура ОбновитьДанныеПериода()
	
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	ОбработкаОбъект.ОбновитьДанныеПериода();
	ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
			
КонецПроцедуры
#КонецОбласти 

&НаКлиенте
Процедура ПередЗакрытиемЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = КодВозвратаДиалога.Да Тогда
		ЗакрытиеФормыПодтверждено = Истина;
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ПолучитьДанныеВВидеСтруктуры(СохранятьТабличныеДокументы)
	
	ФормаОбъект = РеквизитФормыВЗначение("Объект");
	ДанныеСтруктура = ФормаОбъект.ПолучитьДанныеВВидеСтруктурыНаСервере(СохранятьТабличныеДокументы);
	ЗначениеВРеквизитФормы(ФормаОбъект, "Объект");
	
	Возврат ДанныеСтруктура;
	
КонецФункции

&НаКлиенте
Процедура ОткрытьКонструкторЗапроса(ИдентификаторБазы)    	
	
	ТекстЗапроса = Объект["ТекстЗапроса" + ИдентификаторБазы];
		
	Если Объект["ТипБазы" + ИдентификаторБазы] = 0 Тогда
		
		Если ЗначениеЗаполнено(ТекстЗапроса) Тогда
			Конструктор = Новый КонструкторЗапроса(ТекстЗапроса);
		Иначе
			Конструктор = Новый КонструкторЗапроса();
		КонецЕсли;
		
		#Если ТолстыйКлиентУправляемоеПриложение Тогда
			Если Конструктор.ОткрытьМодально() Тогда
				Объект["ТекстЗапроса" + ИдентификаторБазы] = Конструктор.Текст;
			КонецЕсли;
		#ИначеЕсли ТонкийКлиент Тогда
			ПараметрыКонструктора = Новый Структура("Конструктор, ИдентификаторБазы", Конструктор, ИдентификаторБазы);
			ОповещениеКонструктора = Новый ОписаниеОповещения("ВыполнитьПослеЗакрытияКонструктора", ЭтаФорма, ПараметрыКонструктора);
			Конструктор.Показать(ОповещениеКонструктора);
		#КонецЕсли
		
	ИначеЕсли Объект["ТипБазы" + ИдентификаторБазы] = 1 Тогда
		
		Если Объект["ВариантРаботыВнешнейБазы" + ИдентификаторБазы] = 0 Тогда
			ПараметрСоединения = 
				"File=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКБазе"]
				+ """;Usr=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Логин"]
				+ """;Pwd=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Пароль"] + """;";	
		Иначе
			ПараметрСоединения = 
				"Srvr=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Сервер"]
				+ """;Ref=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКБазе"] 
				+ """;Usr=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Логин"] 
				+ """;Pwd=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Пароль"] + """;";
		КонецЕсли;

		
		Попытка
			Application = Новый COMОбъект(СтрЗаменить(Объект["ВерсияПлатформыВнешнейБазы" + ИдентификаторБазы],".","") + ".Application");
			Подключение = Application.Connect(ПараметрСоединения);
		Исключение
			Сообщить(Формат(ТекущаяДата(),"ДЛФ=DT") + ": Ошибка при подключении к внешней базе: " + ОписаниеОшибки());
			Возврат;
		КонецПопытки;
			
		Если Подключение Тогда
			Конструктор = Application.NewObject("КонструкторЗапроса");
			Конструктор.Текст = Объект["ТекстЗапроса" + ИдентификаторБазы];
			Если Конструктор.ОткрытьМодально() Тогда
				Объект["ТекстЗапроса" + ИдентификаторБазы] = Конструктор.Текст;
			КонецЕсли;
		КонецЕсли;
	 	
	КонецЕсли;
			
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьПослеЗакрытияКонструктора(Результат, ПараметрыКонструктора) Экспорт
	
	Если Не ПустаяСтрока(Результат) Тогда
		Объект["ТекстЗапроса" + ПараметрыКонструктора.ИдентификаторБазы] = СокрЛП(Результат);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьКодДляВыводаИЗапретаВыводаСтрок()
	
	Если Не Объект.КодДляВыводаСтрокРедактируетсяВручную Тогда
		
		Если Объект.УсловияВыводаСтрок.Количество() = 0 Тогда
			
			Объект.КодДляВыводаСтрок = "Истина";
			
		Иначе
			
			Объект.КодДляВыводаСтрок = "";
		
			Для Каждого СтрокаТЧ Из Объект.УсловияВыводаСтрок Цикл
				
				КодИзСтрокиТЧ = ПреобразоватьСтрокуРеквизитовВКодДляВыводаИЗапретаВыводаСтрок(СтрокаТЧ);
				Объект.КодДляВыводаСтрок =
					Объект.КодДляВыводаСтрок 
					+ ?(ПустаяСтрока(Объект.КодДляВыводаСтрок), "", Символы.ПС + Объект.ЛогическийОператорДляУсловийВыводаСтрок + " ")
					+ КодИзСтрокиТЧ;
				
			КонецЦикла;
				
		КонецЕсли;
		
		Объект.КодДляВыводаСтрок = "УсловияВыводаСтрокиВыполнены = " + Объект.КодДляВыводаСтрок + ";";
		
	КонецЕсли;
	
	Если Не Объект.КодДляЗапретаВыводаСтрокРедактируетсяВручную Тогда
		
		Если Объект.УсловияЗапретаВыводаСтрок.Количество() = 0 Тогда
			
			Объект.КодДляЗапретаВыводаСтрок = "Ложь";
			
		Иначе
			
			Объект.КодДляЗапретаВыводаСтрок = "";
		
			Для Каждого СтрокаТЧ Из Объект.УсловияЗапретаВыводаСтрок Цикл
				
				КодИзСтрокиТЧ = ПреобразоватьСтрокуРеквизитовВКодДляВыводаИЗапретаВыводаСтрок(СтрокаТЧ);
				Объект.КодДляЗапретаВыводаСтрок =
					Объект.КодДляЗапретаВыводаСтрок 
					+ ?(ПустаяСтрока(Объект.КодДляЗапретаВыводаСтрок), "", Символы.ПС + Объект.ЛогическийОператорДляУсловийЗапретаВыводаСтрок + " ")
					+ КодИзСтрокиТЧ;
				
			КонецЦикла;
				
		КонецЕсли;
		
		Объект.КодДляЗапретаВыводаСтрок = "УсловияЗапретаВыводаСтрокиВыполнены = " + Объект.КодДляЗапретаВыводаСтрок + ";";
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Функция ПреобразоватьСтрокуРеквизитовВКодДляВыводаИЗапретаВыводаСтрок(СтрокаТЧ)

	КодИзСтрокиТЧ = "";
	
	Если СтрокаТЧ.Условие <> "Заполнен" Тогда					
					
		Если СтрокаТЧ.ТипСравнения = "Значение" Тогда
			Если ТипЗнч(СтрокаТЧ.СравниваемоеЗначение) = Тип("Дата") Тогда 
				ПраваяСторона = 
					"Дата("
					+ Год(СтрокаТЧ.СравниваемоеЗначение)
					+ ","
					+ Месяц(СтрокаТЧ.СравниваемоеЗначение)
					+ ","
					+ День(СтрокаТЧ.СравниваемоеЗначение)
					+ ","
					+ Час(СтрокаТЧ.СравниваемоеЗначение)
					+ ","
					+ Минута(СтрокаТЧ.СравниваемоеЗначение)
					+ ","
					+ Секунда(СтрокаТЧ.СравниваемоеЗначение)
					+ ")";
			ИначеЕсли ТипЗнч(СтрокаТЧ.СравниваемоеЗначение) = Тип("Число") Тогда 
				ПраваяСторона = Строка(СтрокаТЧ.СравниваемоеЗначение);
			ИначеЕсли ТипЗнч(СтрокаТЧ.СравниваемоеЗначение) = Тип("Строка") Тогда 
				ПраваяСторона = """" + Строка(СтрокаТЧ.СравниваемоеЗначение) + """";
			ИначеЕсли ТипЗнч(СтрокаТЧ.СравниваемоеЗначение) = Тип("Булево") Тогда 
				Если СтрокаТЧ.СравниваемоеЗначение Тогда
					ПраваяСторона = "Истина";
				Иначе
					ПраваяСторона = "Ложь";
				КонецЕсли;
			Иначе
				ПраваяСторона = Строка(СтрокаТЧ.СравниваемоеЗначение);
			КонецЕсли;
			
		Иначе
			ПраваяСторона = СтрокаТЧ.ИмяСравниваемогоРеквизита2;
		КонецЕсли;
		
		КодИзСтрокиТЧ =
			СтрокаТЧ.ИмяСравниваемогоРеквизита
			+ " "
			+ СтрокаТЧ.Условие
			+ " "
			+ ПраваяСторона;
		
	Иначе
		
		КодИзСтрокиТЧ =
			"ЗначениеЗаполнено("
			+ СтрокаТЧ.ИмяСравниваемогоРеквизита
			+ ")";
		
	КонецЕсли;
	
	Возврат КодИзСтрокиТЧ;	

КонецФункции

&НаСервере
Процедура ПолучитьПараметрыИзЗапросаНаСервере(ИдентификаторБазы)
	
	Если ПустаяСтрока(Объект["ТекстЗапроса" + ИдентификаторБазы]) Тогда	
		Возврат;
	КонецЕсли;
	
	//Текущая
	Если Объект["ТипБазы" + ИдентификаторБазы] = 0 Тогда
		
		Запрос = Новый Запрос();
		
	//Внешняя
	ИначеЕсли Объект["ТипБазы" + ИдентификаторБазы] = 1 Тогда
		
		Если Объект["ВариантРаботыВнешнейБазы" + ИдентификаторБазы] = 0 Тогда
			ПараметрСоединения = 
				"File=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКБазе"]
				+ """;Usr=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Логин"]
				+ """;Pwd=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Пароль"] + """;";	
		Иначе
			ПараметрСоединения = 
				"Srvr=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Сервер"]
				+ """;Ref=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКБазе"] 
				+ """;Usr=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Логин"] 
				+ """;Pwd=""" + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Пароль"] + """;";
		КонецЕсли;
				
		Попытка
			COMConnector = Новый COMОбъект(Объект["ВерсияПлатформыВнешнейБазы" + ИдентификаторБазы] + ".COMConnector");
			Подключение = COMConnector.Connect(ПараметрСоединения);
		Исключение
			ТекстОшибки = "Ошибка при подключении к внешней базе: " + ОписаниеОшибки();
			Сообщить(Формат(ТекущаяДата(),"ДЛФ=DT") + ": " + ТекстОшибки);
			ТекстОшибок = ТекстОшибок + Символы.ПС + ТекстОшибки;
			Возврат;
		КонецПопытки;

		Запрос = Подключение.NewObject("Запрос");		
	
	КонецЕсли;
	
	Запрос.Текст = Объект["ТекстЗапроса" + ИдентификаторБазы];
	
	Попытка
		ПараметрыЗапроса = Запрос.НайтиПараметры();
	Исключение
		Сообщить(Формат(ТекущаяДата(),"ДЛФ=DT") + ": Ошибка при получении списка параметров: " + ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	Для Каждого ПараметрЗапроса Из ПараметрыЗапроса Цикл
		
		ИмяПараметра = ПараметрЗапроса.Имя;
		Если ИмяПараметра = "ДатаНачала" Или ИмяПараметра = "ДатаОкончания" Тогда
			Продолжить;
		КонецЕсли;
		
		НайденныеПараметры = Объект["СписокПараметров" + ИдентификаторБазы].НайтиСтроки(Новый Структура("ИмяПараметра", ИмяПараметра));
		Если НайденныеПараметры.Количество() = 0 Тогда
			ТекущийПараметр = Объект["СписокПараметров" + ИдентификаторБазы].Добавить();
			ТекущийПараметр.ИмяПараметра = ИмяПараметра;
		Иначе
			ТекущийПараметр = НайденныеПараметры[0];
		КонецЕсли; 
		
		ТекущийПараметр.ЗначениеПараметра = ПараметрЗапроса.ТипЗначения.ПривестиЗначение(ТекущийПараметр.ЗначениеПараметра);		
		ТекущийПараметр.ТипПараметра = Строка(ТипЗнч(ТекущийПараметр.ЗначениеПараметра));
		
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьТипыСтолбцовКлючаВоВсехСтроках()
	
	Для Каждого СтрокаТЗ Из Объект.Результат Цикл
		
		Если Объект.ВидимостьКлюч1 Тогда
			СтрокаТЗ.ТипСтолбца1Ключа = ТипЗнч(СтрокаТЗ.Ключ1);
		КонецЕсли; 
		
		Если Объект.ВидимостьКлюч2 Тогда
			СтрокаТЗ.ТипСтолбца2Ключа = ТипЗнч(СтрокаТЗ.Ключ2);
		КонецЕсли; 
		
		Если Объект.ВидимостьКлюч3 Тогда
			СтрокаТЗ.ТипСтолбца3Ключа = ТипЗнч(СтрокаТЗ.Ключ3);
		КонецЕсли; 
			
	КонецЦикла; 
		
КонецПроцедуры

&НаСервере
Функция ВыгрузитьРезультатВФайлНаСервере(ДляКлиента, ПредставленияЗаголовковРеквизитов)
	
	РеквизитОбъект = РеквизитФормыВЗначение("Объект");
	РеквизитОбъект.ПредставленияЗаголовковРеквизитов = ПредставленияЗаголовковРеквизитов;
	АдресФайла = РеквизитОбъект.ВыгрузитьРезультатВФайлНаСервере(ДляКлиента);
	Возврат АдресФайла;
	
КонецФункции

&НаКлиенте
Процедура КомандаВыгрузитьРезультатВФайлНаКлиентеЗавершениеВопрос(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
		Возврат;
	КонецЕсли;
	
	АдресФайла = ВыгрузитьРезультатВФайлНаСервере(Истина, ПредставленияЗаголовковРеквизитов);
	Если АдресФайла = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ДанныеФайла = ПолучитьИзВременногоХранилища(АдресФайла);
	ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
	ДиалогСохраненияФайла.ПолноеИмяФайла = Объект.ПутьКФайлуВыгрузки;
	ДиалогСохраненияФайла.Фильтр = "*." + Объект.ФорматФайлаВыгрузки + "|*." + Объект.ФорматФайлаВыгрузки;
	ДиалогСохраненияФайла.Заголовок = "Выберите каталог"; 
	
	ДиалогСохраненияФайла.Показать(Новый ОписаниеОповещения("КомандаВыгрузитьРезультатВФайлНаКлиентеЗавершение", ЭтаФорма, Новый Структура("ДанныеФайла, ДиалогСохраненияФайла", ДанныеФайла, ДиалогСохраненияФайла)));

КонецПроцедуры

&НаКлиенте
Процедура КомандаВыгрузитьРезультатВФайлНаКлиентеЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	ДанныеФайла = ДополнительныеПараметры.ДанныеФайла;
	ДиалогСохраненияФайла = ДополнительныеПараметры.ДиалогСохраненияФайла;
	         	
	Если (ВыбранныеФайлы <> Неопределено) Тогда
		
		ДанныеФайла.Записать(ДиалогСохраненияФайла.ПолноеИмяФайла);
		Сообщить(Формат(ТекущаяДата(),"ДФ='yyyy.MM.dd HH.mm.ss'") + ": Выгрузка в файл завершена (" + ДиалогСохраненияФайла.ПолноеИмяФайла + ")");
		
	Иначе
		
		Сообщить(Формат(ТекущаяДата(),"ДФ='yyyy.MM.dd HH.mm.ss'") + ": Выгрузка в файл отменена");
		
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ПредварительныйПросмотрИсточникаНаКлиенте(ИдентификаторБазы, МаксимальноеЧислоСтрок = 0, ТолькоДубликаты = Ложь)

	//Передача файла с клиента на сервер
	//Если источник - файл, хранящийся на клиентском компьютере
	Если Объект["ТипБазы" + ИдентификаторБазы] = 3 И Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "УстройствоХраненияФайла"] = 1 Тогда
		АдресВременногоХранилищаФайла = "";
		НачатьПомещениеФайла(Новый ОписаниеОповещения("ПредварительныйПросмотрИсточникаНаКлиентеПередатьФайлЗавершение", ЭтаФорма, Новый Структура("ИдентификаторБазы, МаксимальноеЧислоСтрок, ТолькоДубликаты", ИдентификаторБазы, МаксимальноеЧислоСтрок, ТолькоДубликаты)), АдресВременногоХранилищаФайла, Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКФайлу"],Ложь);
	Иначе
		ПредварительныйПросмотрИсточникаНаКлиентеЗавершение(ИдентификаторБазы, МаксимальноеЧислоСтрок, ТолькоДубликаты)
	КонецЕсли;
		
КонецПроцедуры

&НаКлиенте
Процедура ПредварительныйПросмотрИсточникаНаКлиентеПередатьФайлЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
	
	ИдентификаторБазы = ДополнительныеПараметры.ИдентификаторБазы;
	МаксимальноеЧислоСтрок = ДополнительныеПараметры.МаксимальноеЧислоСтрок;
	ТолькоДубликаты = ДополнительныеПараметры.ТолькоДубликаты;

	Если Результат Тогда
		ПредварительныйПросмотрИсточникаНаКлиентеЗавершение(ИдентификаторБазы, МаксимальноеЧислоСтрок, ТолькоДубликаты, Адрес);
	Иначе
		ТекстОшибок = "Не удалось поместить во временное хранилище файл: """ + Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКФайлу"] + """";
		Сообщить(Формат(ТекущаяДата(),"ДЛФ=DT") + ": " + ТекстОшибок);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПредварительныйПросмотрИсточникаНаКлиентеЗавершение(ИдентификаторБазы, МаксимальноеЧислоСтрок, ТолькоДубликаты, АдресВременногоХранилищаФайла = "")
	
	ТабличныйДокумент = ПолучитьТабличныйДокументСДаннымиИзИсточникаНаСервере(ИдентификаторБазы, МаксимальноеЧислоСтрок, ТолькоДубликаты, АдресВременногоХранилищаФайла);
	
	Если ТабличныйДокумент <> Неопределено Тогда
		ТабличныйДокумент.Показать(СтрШаблон("Источник %1 (%2)", ИдентификаторБазы, ?(МаксимальноеЧислоСтрок = 0, "все строки", "" + МаксимальноеЧислоСтрок + "строк")));
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ПолучитьТабличныйДокументСДаннымиИзИсточникаНаСервере(ИдентификаторБазы, МаксимальноеЧислоСтрок = 0, ТолькоДубликаты = Ложь, АдресВременногоХранилищаФайла = "")

	//Если источник - файл, хранящийся на клиентском компьютере
	Если Объект["ТипБазы" + ИдентификаторБазы] = 3 И Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "УстройствоХраненияФайла"] = 1 Тогда
		//Сохранение пути к исходному файлу
		ПутьКФайлуНаКлиенте = Объект.ПодключениеКВнешнейБазеАПутьКФайлу;
		//Создание временного файла на сервере
		ФайлНаСервере = ПолучитьИзВременногоХранилища(АдресВременногоХранилищаФайла); 
		ПутьКФайлуНаСервере = ПолучитьИмяВременногоФайла(Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ФорматФайла"]);
		ФайлНаСервере.Записать(ПутьКФайлуНаСервере);
		Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКФайлу"] = ПутьКФайлуНаСервере;
	КонецЕсли;
	
	ТекстОшибки = "";
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
		
	Если Не ОбработкаОбъект.ПроверитьЗаполнениеРеквизитов(ИдентификаторБазы) Тогда
		
		//Если источник - файл, хранящийся на клиентском компьютере
		Если Объект["ТипБазы" + ИдентификаторБазы] = 3 И Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "УстройствоХраненияФайла"] = 1 Тогда
			//Удаление временного файла на сервере
			Попытка
				УдалитьФайлы(Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКФайлу"]);
			Исключение КонецПопытки;
			//Восстановление пути к исходному файлу
			Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКФайлу"] = ПутьКФайлуНаКлиенте;
		КонецЕсли;
		
		Возврат Неопределено;
		
	КонецЕсли;
	
	Подключение = Неопределено;
	ТЗ = ОбработкаОбъект.ПрочитатьДанныеИПолучитьТЗ(ИдентификаторБазы, ТекстОшибки, Подключение);
	
	Если ТЗ = Неопределено Тогда
		
		Сообщить(Формат(ТекущаяДата(),"ДЛФ=DT") + ": " + ТекстОшибки);
		
		//Если источник - файл, хранящийся на клиентском компьютере
		Если Объект["ТипБазы" + ИдентификаторБазы] = 3 И Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "УстройствоХраненияФайла"] = 1 Тогда
			//Удаление временного файла на сервере
			Попытка
				УдалитьФайлы(Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКФайлу"]);
			Исключение КонецПопытки;
			//Восстановление пути к исходному файлу
			Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКФайлу"] = ПутьКФайлуНаКлиенте;
		КонецЕсли;
		
		Возврат Неопределено;
	КонецЕсли;
	
	Макет = ОбработкаОбъект.ПолучитьМакет("ФормаПредварительногоПросмотра");
	ТабличныйДокумент = Новый ТабличныйДокумент;
	
	//Ключ 1
	ИмяКлюча1 = ТЗ.Колонки.Get(0).Name;
	КолонкиСКлючомСтрокой = ИмяКлюча1;
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка|Ключ1");
	ТабличныйДокумент.Вывести(ОбластьШапка);
	
	//Ключ 2
	Если Объект.ЧислоСтолбцовВКлюче > 1 Тогда
		ИмяКлюча2 = ТЗ.Колонки.Get(1).Name;
		КолонкиСКлючомСтрокой = КолонкиСКлючомСтрокой + "," + ИмяКлюча2;
		ОбластьШапка = Макет.ПолучитьОбласть("Шапка|Ключ2");
		ТабличныйДокумент.Присоединить(ОбластьШапка);
	КонецЕсли;
	
	//Ключ 3
	Если Объект.ЧислоСтолбцовВКлюче > 2 Тогда
		ИмяКлюча3 = ТЗ.Колонки.Get(2).Name;
		КолонкиСКлючомСтрокой = КолонкиСКлючомСтрокой + "," + ИмяКлюча3;
		ОбластьШапка = Макет.ПолучитьОбласть("Шапка|Ключ3");
		ТабличныйДокумент.Присоединить(ОбластьШапка);
	КонецЕсли;
	
	ТЗ.Сортировать(КолонкиСКлючомСтрокой);
	
	ТЗ_Сгруппированная = ТЗ.Скопировать(); 
	
	ИмяКолонкиКоличествоСтрокИсточникаДанных = "КоличествоСтрокИсточникаДанных_" + СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");
	ТЗ_Сгруппированная.Колонки.Добавить(ИмяКолонкиКоличествоСтрокИсточникаДанных);
	
	ОбластьРеквизиты = Макет.ПолучитьОбласть("Шапка|Реквизиты");
	ТабличныйДокумент.Присоединить(ОбластьРеквизиты);
		
	ТЗ_Сгруппированная.ЗаполнитьЗначения(1,ИмяКолонкиКоличествоСтрокИсточникаДанных);	
	ТЗ_Сгруппированная.Свернуть(КолонкиСКлючомСтрокой, ИмяКолонкиКоличествоСтрокИсточникаДанных);
	ТЗ_Сгруппированная.Индексы.Добавить(КолонкиСКлючомСтрокой);
		
	ЧислоКолонокТЗ = ТЗ.Колонки.Count();
	СчетчикСтрок = 0;
	Для Каждого СтрокаТЗ Из ТЗ Цикл
		
		СчетчикСтрок = СчетчикСтрок + 1;
		
		Если МаксимальноеЧислоСтрок > 0 И СчетчикСтрок > МаксимальноеЧислоСтрок Тогда
			Прервать;
		КонецЕсли;
		
		Если Подключение = Неопределено Тогда
			ОтборСтруктура = Новый Структура;
		Иначе
			ОтборСтруктура = Подключение.NewObject("Структура");
		КонецЕсли;
				
		Ключ1 = СтрокаТЗ.Get(0);
		ОтборСтруктура.Вставить(ИмяКлюча1, Ключ1);
		
		Если Объект.ЧислоСтолбцовВКлюче > 1 Тогда
			Ключ2 = СтрокаТЗ.Get(1);
			ОтборСтруктура.Вставить(ИмяКлюча2, Ключ2);
		Иначе
			Ключ2 = Неопределено;
		КонецЕсли;
		
		Если Объект.ЧислоСтолбцовВКлюче > 2 Тогда
			Ключ3 = СтрокаТЗ.Get(2);
			ОтборСтруктура.Вставить(ИмяКлюча3, Ключ3);
		Иначе
			Ключ3 = Неопределено;
		КонецЕсли;
		
		СтрокиСгруппированнойТЗ = ТЗ_Сгруппированная.FindRows(ОтборСтруктура);
		ЧислоСтрокПоКлючу = ?(СтрокиСгруппированнойТЗ.Count(), СтрокиСгруппированнойТЗ.Get(0)[ИмяКолонкиКоличествоСтрокИсточникаДанных], 0);
		Если ЧислоСтрокПоКлючу > 1 Тогда
			ИмяОбластиСтрока = "СтрокаСОшибками";
		Иначе
			Если ТолькоДубликаты Тогда
				Продолжить;
			КонецЕсли;
			ИмяОбластиСтрока = "СтрокаБезОшибок";
		КонецЕсли;
		
		ОбластьСтрока = Макет.ПолучитьОбласть(ИмяОбластиСтрока + "|Ключ1");
		ОбластьСтрока.Параметры.Ключ1 = Строка(Ключ1);
		ТабличныйДокумент.Вывести(ОбластьСтрока);
		
		Если Объект.ЧислоСтолбцовВКлюче > 1 Тогда
			ОбластьСтрока = Макет.ПолучитьОбласть(ИмяОбластиСтрока + "|Ключ2");
			ОбластьСтрока.Параметры.Ключ2 = Строка(Ключ2);
			ТабличныйДокумент.Присоединить(ОбластьСтрока);
		КонецЕсли;
		
		Если Объект.ЧислоСтолбцовВКлюче > 2 Тогда
			ОбластьСтрока = Макет.ПолучитьОбласть(ИмяОбластиСтрока + "|Ключ3");
			ОбластьСтрока.Параметры.Ключ3 = Строка(Ключ3);
			ТабличныйДокумент.Присоединить(ОбластьСтрока);
		КонецЕсли;		
		
		ОбластьСтрока = Макет.ПолучитьОбласть(ИмяОбластиСтрока + "|Реквизиты");
		ОбластьСтрока.Параметры.ЧислоСтрок = ЧислоСтрокПоКлючу; 
		
		СмещениеНомераРеквизита = Объект.ЧислоСтолбцовВКлюче;
		Для СчетчикКолонок = 1 По Мин(ЧислоРеквизитов, ЧислоКолонокТЗ - Объект.ЧислоСтолбцовВключе) Цикл
			ОбластьСтрока.Параметры["Реквизит" + СчетчикКолонок] = Строка(СтрокаТЗ.Get(СчетчикКолонок + СмещениеНомераРеквизита - 1));
		КонецЦикла;
		
		ТабличныйДокумент.Присоединить(ОбластьСтрока);
			
	КонецЦикла;
	
	ТЗ = Неопределено;
	ТЗ_Сгруппированная = Неопределено;
	Подключение = Неопределено;
	
	ТабличныйДокумент.Защита = Ложь;
	ТабличныйДокумент.ТолькоПросмотр = Истина;
	ТабличныйДокумент.АвтоМасштаб = Истина;
	
	//Если источник - файл, хранящийся на клиентском компьютере
	Если Объект["ТипБазы" + ИдентификаторБазы] = 3 И Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "УстройствоХраненияФайла"] = 1 Тогда
		//Удаление временного файла на сервере
		Попытка
			УдалитьФайлы(Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКФайлу"]);
		Исключение КонецПопытки;
		//Восстановление пути к исходному файлу
		Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКФайлу"] = ПутьКФайлуНаКлиенте;
	КонецЕсли;
	
	Возврат ТабличныйДокумент;
		
КонецФункции

Процедура ПроверитьВозможностьПодключенияКИсточникуНаСервере(ИдентификаторБазы)
	
	ТекстОшибок = "";
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	ПодключениеВыполненоУспешно = ОбработкаОбъект.ПроверитьВозможностьПодключенияКИсточнику(ИдентификаторБазы, ТекстОшибок);
	Если ПодключениеВыполненоУспешно Тогда
		Сообщить("Подключение к источнику " + ИдентификаторБазы + " выполнено успешно");
	Иначе
		Сообщить("Ошибка при подключении к источнику " + ИдентификаторБазы + ": " + ТекстОшибок);
	КонецЕсли; 
	
КонецПроцедуры

#Область Видимость_доступность_элементов_формы
&НаКлиенте
Процедура ОбновитьВидимостьДоступностьЭлементовФормы()
		
	ОбновитьВидимостьДоступностьЭлементовФормыПоИдентификаторуБазы("А");
	ОбновитьВидимостьДоступностьЭлементовФормыПоИдентификаторуБазы("Б");
	Элементы.РезультатКомандаВидимостьТиповСтолбцовКлюча.Пометка = Объект.ОтображатьТипыСтолбцовКлюча;
	Элементы.РезультатКомандаВидимостьКлюч2.Видимость= Объект.ЧислоСтолбцовВКлюче > 1;
	Элементы.РезультатКомандаВидимостьКлюч3.Видимость = Объект.ЧислоСтолбцовВКлюче > 2;
	
	ОбновитьВидимостьКлючейТЧ();	
	
	//Если Объект.ТипПериодаАбсолютный Тогда
	Если Объект.ТипПериода = 1 Тогда
		Элементы.ЗначениеАбсолютногоПериода.ТолькоПросмотр = Истина;
		Элементы.ГруппаОтносительныйПериод.Видимость = Истина;
		Элементы.ГруппаПодчиненныйОтносительныйПериод.Видимость = Ложь;
	ИначеЕсли Объект.ТипПериода = 2 Тогда	
		Элементы.ЗначениеАбсолютногоПериода.ТолькоПросмотр = Истина;
		Элементы.ГруппаОтносительныйПериод.Видимость = Истина;
		Элементы.ГруппаПодчиненныйОтносительныйПериод.Видимость = Истина;
	Иначе
		Элементы.ЗначениеАбсолютногоПериода.ТолькоПросмотр = Ложь;
		Элементы.ГруппаОтносительныйПериод.Видимость = Ложь;
	КонецЕсли;
	
	ОбновитьЗаголовок();
	ОбновитьРеквизитыПроизвольныйКод();
	ОбновитьВидимостьДоступностьВкладкиУсловияЗапретаВыводаСтрок();
	ОбновитьВидимостьДоступностьВкладкиУсловияВыводаСтрок();
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьРеквизитыПроизвольныйКод()
	
	Для СчетчикЭлементов = 1 По 3 Цикл
		ОбновитьВидимостьДоступностьРеквизитаПроизвольныйКод(СчетчикЭлементов, "А"); 
		ОбновитьВидимостьДоступностьРеквизитаПроизвольныйКод(СчетчикЭлементов, "Б");
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьВидимостьДоступностьРеквизитаПроизвольныйКод(НомерЭлементаФормы, ИдентификаторБазы)
	
	Элементы["ПроизвольныйКодКлюча" + НомерЭлементаФормы + ИдентификаторБазы].Видимость = 
		Объект["ВыполнятьПроизвольныйКодКлюча" + НомерЭлементаФормы + ИдентификаторБазы];
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьЗаголовок()
	
	ЭтаФорма.Заголовок = "КСД: " + Объект.Заголовок;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьИтогиПоРеквизитамТЧ(ИдентификаторБазы)
	
	Для СчетчикРеквизитов = 1 По ЧислоРеквизитов Цикл
	
		ИмяРеквизита = "Реквизит" + ИдентификаторБазы + СчетчикРеквизитов;
		Элементы["Результат" + ИмяРеквизита].ТекстПодвала = ?(Объект["НастройкиФайла" + ИдентификаторБазы].Количество() >= СчетчикРеквизитов И Объект["НастройкиФайла" + ИдентификаторБазы][СчетчикРеквизитов - 1].РассчитыватьИтог, Объект["ЗначениеИтога" + ИмяРеквизита], "");
	
	КонецЦикла; 
		
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьВидимостьДоступностьЭлементовФормыПоИдентификаторуБазы(ИдентификаторБазы)
	
	Элементы["ГруппаОбработкаКлюча2" + ИдентификаторБазы].Видимость = Объект.ЧислоСтолбцовВКлюче > 1;
	Элементы["ГруппаОбработкаКлюча3" + ИдентификаторБазы].Видимость = Объект.ЧислоСтолбцовВКлюче > 2;
	
	Элементы["ГруппаСтраницаПараметрыЗапроса" + ИдентификаторБазы].Видимость = Объект["ТипБазы" + ИдентификаторБазы] <= 1;
	Элементы["СписокПараметров"  + ИдентификаторБазы + "КомандаПолучитьПараметрыЗапроса"  + ИдентификаторБазы].Видимость = Объект["ТипБазы" + ИдентификаторБазы] <= 2;
	
	//Таблица 
	Элементы["ГруппаСтраницаТаблица" + ИдентификаторБазы].Видимость = Объект["ТипБазы" + ИдентификаторБазы] = 4;
		
#Область _1C_8_внешняя
	
	Если Объект["ТипБазы" + ИдентификаторБазы] = 1 Тогда
		
		Элементы["ГруппаВариантПараметрыПодключенияКБазе" + ИдентификаторБазы].Видимость 				= Истина;
		Элементы["ГруппаВариантВерсияПлатформыБазы" + ИдентификаторБазы].Видимость 						= Истина;
		Если Объект["ВариантРаботыВнешнейБазы" + ИдентификаторБазы] = 1 Тогда
			Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Сервер"].Видимость 				= Истина;
			Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКБазе"].Заголовок 			= "Имя базы";
		Иначе
			Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Сервер"].Видимость 				= Ложь;
			Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКБазе"].Заголовок 			= "Путь к базе";
		КонецЕсли;
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ДрайверSQL"].Видимость 				= Ложь;
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Видимость 							= Истина;
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Заголовок							= "Текст запроса";
		Элементы["ДекорацияТекстЗапроса" + ИдентификаторБазы].Видимость									= Истина;
		Элементы["ГруппаТекстЗапроса" + ИдентификаторБазы + "Команды"].Видимость 						= Истина;
		
		Элементы["ГруппаПараметрыПодключенияКФайлу" + ИдентификаторБазы].Видимость 						= Ложь;	
		//Элементы["ГруппаПараметрыКолонокФайла" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["НастройкиФайла" + ИдентификаторБазы + "НомерКолонки"].Видимость						= Ложь;
		
		Элементы["ГруппаСворачиватьТаблицу" + ИдентификаторБазы].Видимость 								= Ложь;
		
		Элементы["ИспользоватьВКачествеКлючаУникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Истина;
		Элементы["ИспользоватьВКачествеКлюча2УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Истина;
		Элементы["ИспользоватьВКачествеКлюча3УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Истина;
		Элементы["НомерСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["НомерСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["НомерСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["ИмяСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 								= Ложь;
		Элементы["ИмяСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["ИмяСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		
		Элементы["ПриводитьКлючКСтроке" + ИдентификаторБазы].Видимость 									= Не Объект["ИспользоватьВКачествеКлючаУникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ПриводитьКлюч2КСтроке" + ИдентификаторБазы].Видимость 								= Не Объект["ИспользоватьВКачествеКлюча2УникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ПриводитьКлюч3КСтроке" + ИдентификаторБазы].Видимость 								= Не Объект["ИспользоватьВКачествеКлюча3УникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ДлинаКлючаПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Не Объект["ИспользоватьВКачествеКлючаУникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ДлинаКлюча2ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Не Объект["ИспользоватьВКачествеКлюча2УникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ДлинаКлюча3ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Не Объект["ИспользоватьВКачествеКлюча3УникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ДлинаКлючаПриПриведенииКСтроке" + ИдентификаторБазы].ТолькоПросмотр 					= Не Объект["ПриводитьКлючКСтроке" + ИдентификаторБазы];
		Элементы["ДлинаКлюча2ПриПриведенииКСтроке" + ИдентификаторБазы].ТолькоПросмотр 					= Не Объект["ПриводитьКлюч2КСтроке" + ИдентификаторБазы];
		Элементы["ДлинаКлюча3ПриПриведенииКСтроке" + ИдентификаторБазы].ТолькоПросмотр 					= Не Объект["ПриводитьКлюч3КСтроке" + ИдентификаторБазы];
		
		Элементы["НастройкиФайла" + ИдентификаторБазы + "ИмяКолонки"].Видимость							= Ложь;
		
		Элементы["КомандаПроверитьВозможностьПодключенияКИсточнику" + ИдентификаторБазы].Видимость		= Истина;
		
#КонецОбласти 

#Область SQL

	ИначеЕсли Объект["ТипБазы" + ИдентификаторБазы] = 2 Тогда
		
		Элементы["ГруппаВариантПараметрыПодключенияКБазе" + ИдентификаторБазы].Видимость 				= Истина;
		Элементы["ГруппаВариантВерсияПлатформыБазы" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Сервер"].Видимость 					= Истина;
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКБазе"].Заголовок 				= "Имя базы данных";
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ДрайверSQL"].Видимость 				= Истина;
		Элементы["ГруппаПараметрыПодключенияКФайлу" + ИдентификаторБазы].Видимость 						= Ложь;
		//Элементы["ГруппаПараметрыКолонокФайла" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["НастройкиФайла" + ИдентификаторБазы + "НомерКолонки"].Видимость						= Ложь;
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Видимость 							= Истина;
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Заголовок							= "Текст запроса";
		Элементы["ДекорацияТекстЗапроса" + ИдентификаторБазы].Видимость									= Истина;
		Элементы["ГруппаТекстЗапроса" + ИдентификаторБазы + "Команды"].Видимость 						= Ложь;
		
		Элементы["ГруппаСворачиватьТаблицу" + ИдентификаторБазы].Видимость 								= Ложь;
		
		Элементы["ИспользоватьВКачествеКлючаУникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["ИспользоватьВКачествеКлюча2УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["ИспользоватьВКачествеКлюча3УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["НомерСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["НомерСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["НомерСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["ИмяСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 								= Ложь;
		Элементы["ИмяСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["ИмяСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		
		Элементы["ПриводитьКлючКСтроке" + ИдентификаторБазы].Видимость 									= Истина;
		Элементы["ПриводитьКлюч2КСтроке" + ИдентификаторБазы].Видимость 								= Истина;
		Элементы["ПриводитьКлюч3КСтроке" + ИдентификаторБазы].Видимость 								= Истина;
		//Приведение производится просто к строке без указания длины
		Элементы["ДлинаКлючаПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ДлинаКлюча2ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ДлинаКлюча3ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		
		Элементы["НастройкиФайла" + ИдентификаторБазы + "ИмяКолонки"].Видимость							= Ложь;
		
		Элементы["КомандаПроверитьВозможностьПодключенияКИсточнику" + ИдентификаторБазы].Видимость		= Истина;

#КонецОбласти 

#Область Файл

	ИначеЕсли Объект["ТипБазы" + ИдентификаторБазы] = 3 Тогда
		
		ФайлФорматаXML = Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ФорматФайла" ] = "XML";
		ФайлФорматаXLS = Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ФорматФайла" ] = "XLS";
		ФайлФорматаDOC = Объект["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ФорматФайла" ] = "DOC";
				
		Элементы["ГруппаВариантПараметрыПодключенияКБазе" + ИдентификаторБазы].Видимость 				= Ложь;
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Видимость							= Ложь;
		
		Элементы["ГруппаПараметрыПодключенияКФайлу" + ИдентификаторБазы].Видимость 						= Истина;
		Элементы["ГруппаПараметрыПодключенияКФайлуОбщие" + ИдентификаторБазы].Видимость					= Истина;
		Элементы["ГруппаПараметрыПодключенияКФайлуXMLJSON" + ИдентификаторБазы].Видимость 				= ФайлФорматаXML;
		Элементы["ГруппаПараметрыПодключенияКФайлуXML" + ИдентификаторБазы].Видимость 					= ФайлФорматаXML;
		Элементы["ГруппаПараметрыПодключенияКФайлуНеXML" + ИдентификаторБазы].Видимость					= Не ФайлФорматаXML;
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "НомерТаблицыВФайле"].Видимость		= ФайлФорматаXLS Или ФайлФорматаDOC;
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "НомерТаблицыВФайле"].Заголовок		= ?(ФайлФорматаXLS, "Номер книги", "Номер таблицы");
		
		//Элементы["ГруппаПараметрыКолонокФайла" + ИдентификаторБазы].Видимость							= Истина;
		Элементы["НастройкиФайла" + ИдентификаторБазы + "НомерКолонки"].Видимость						= Истина;
		
		Элементы["ГруппаСворачиватьТаблицу" + ИдентификаторБазы].Видимость 								= Истина;
		
		Элементы["НомерСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 							= Не ФайлФорматаXML;
		Элементы["НомерСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Не ФайлФорматаXML;
		Элементы["НомерСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Не ФайлФорматаXML;
		Элементы["ИмяСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 								= ФайлФорматаXML;
		Элементы["ИмяСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= ФайлФорматаXML;
		Элементы["ИмяСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= ФайлФорматаXML;
				
		Элементы["ИспользоватьВКачествеКлючаУникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["ИспользоватьВКачествеКлюча2УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["ИспользоватьВКачествеКлюча3УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		
		Элементы["ПриводитьКлючКСтроке" + ИдентификаторБазы].Видимость 									= Не ФайлФорматаXML;
		Элементы["ПриводитьКлюч2КСтроке" + ИдентификаторБазы].Видимость 								= Не ФайлФорматаXML;
		Элементы["ПриводитьКлюч3КСтроке" + ИдентификаторБазы].Видимость 								= Не ФайлФорматаXML;
		//Приведение производится просто к строке без указания длины
		Элементы["ДлинаКлючаПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ДлинаКлюча2ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ДлинаКлюча3ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		
		Элементы["НастройкиФайла" + ИдентификаторБазы + "НомерКолонки"].Видимость						= Не ФайлФорматаXML;
		Элементы["НастройкиФайла" + ИдентификаторБазы + "ИмяКолонки"].Видимость							= ФайлФорматаXML;
		
		Элементы["КомандаПроверитьВозможностьПодключенияКИсточнику" + ИдентификаторБазы].Видимость		= Ложь;
		
#КонецОбласти 

#Область Таблица

	ИначеЕсли Объект["ТипБазы" + ИдентификаторБазы] = 4 Тогда
		
		Элементы["ГруппаВариантПараметрыПодключенияКБазе" + ИдентификаторБазы].Видимость 				= Ложь;
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Видимость 							= Ложь;
		
		Элементы["ГруппаПараметрыПодключенияКФайлу" + ИдентификаторБазы].Видимость 						= Истина;
		Элементы["ГруппаПараметрыПодключенияКФайлуОбщие" + ИдентификаторБазы].Видимость					= Ложь;
		Элементы["ГруппаПараметрыПодключенияКФайлуXMLJSON" + ИдентификаторБазы].Видимость				= Ложь;
		Элементы["ГруппаПараметрыПодключенияКФайлуXML" + ИдентификаторБазы].Видимость					= Ложь;
		Элементы["ГруппаПараметрыПодключенияКФайлуНеXML" + ИдентификаторБазы].Видимость					= Истина;
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "НомерТаблицыВФайле"].Видимость		= Ложь;
		
		//Элементы["ГруппаПараметрыКолонокФайла" + ИдентификаторБазы].Видимость							= Истина;
		Элементы["НастройкиФайла" + ИдентификаторБазы + "НомерКолонки"].Видимость						= Истина;
				
		Элементы["ГруппаСворачиватьТаблицу" + ИдентификаторБазы].Видимость 								= Истина;
		
		Элементы["НомерСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 							= Истина;
		Элементы["НомерСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Истина;
		Элементы["НомерСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Истина;
		Элементы["ИмяСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 								= Ложь;
		Элементы["ИмяСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["ИмяСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		
		Элементы["ИспользоватьВКачествеКлючаУникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["ИспользоватьВКачествеКлюча2УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["ИспользоватьВКачествеКлюча3УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		
		Элементы["ПриводитьКлючКСтроке" + ИдентификаторБазы].Видимость 									= Истина;
		Элементы["ПриводитьКлюч2КСтроке" + ИдентификаторБазы].Видимость 								= Истина;
		Элементы["ПриводитьКлюч3КСтроке" + ИдентификаторБазы].Видимость 								= Истина;
		//Приведение производится просто к строке без указания длины
		Элементы["ДлинаКлючаПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ДлинаКлюча2ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ДлинаКлюча3ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		
		Элементы["НастройкиФайла" + ИдентификаторБазы + "ИмяКолонки"].Видимость							= Ложь;
		
		Элементы["КомандаПроверитьВозможностьПодключенияКИсточнику" + ИдентификаторБазы].Видимость		= Ложь;
		
#КонецОбласти 

#Область _1C_7_7_внешняя

	ИначеЕсли Объект["ТипБазы" + ИдентификаторБазы] = 5 Тогда
		
		Элементы["ГруппаВариантПараметрыПодключенияКБазе" + ИдентификаторБазы].Видимость 				= Истина;
		Элементы["ГруппаВариантВерсияПлатформыБазы" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ДрайверSQL"].Видимость 				= Ложь;
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "Сервер"].Видимость 					= Ложь;
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "ПутьКБазе"].Заголовок 				= "Путь к базе";
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Видимость 							= Истина;
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Заголовок							= "Текст запроса";
		Элементы["ДекорацияТекстЗапроса" + ИдентификаторБазы].Видимость									= Истина;
		Элементы["ГруппаТекстЗапроса" + ИдентификаторБазы + "Команды"].Видимость 						= Ложь;
		
		Элементы["ГруппаПараметрыПодключенияКФайлу" + ИдентификаторБазы].Видимость 						= Ложь;
		//Элементы["ГруппаПараметрыКолонокФайла" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["НастройкиФайла" + ИдентификаторБазы + "НомерКолонки"].Видимость						= Ложь;
		
		Элементы["ГруппаСворачиватьТаблицу" + ИдентификаторБазы].Видимость 								= Ложь;
		
		Элементы["ИспользоватьВКачествеКлючаУникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["ИспользоватьВКачествеКлюча2УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["ИспользоватьВКачествеКлюча3УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["НомерСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["НомерСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["НомерСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["ИмяСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 								= Ложь;
		Элементы["ИмяСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["ИмяСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		
		Элементы["ПриводитьКлючКСтроке" + ИдентификаторБазы].Видимость 									= Истина;
		Элементы["ПриводитьКлюч2КСтроке" + ИдентификаторБазы].Видимость 								= Истина;
		Элементы["ПриводитьКлюч3КСтроке" + ИдентификаторБазы].Видимость 								= Истина;
		Элементы["ДлинаКлючаПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ДлинаКлюча2ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ДлинаКлюча3ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		
		Элементы["НастройкиФайла" + ИдентификаторБазы + "ИмяКолонки"].Видимость							= Ложь;

		Элементы["КомандаПроверитьВозможностьПодключенияКИсточнику" + ИдентификаторБазы].Видимость		= Ложь;
		
#КонецОбласти 

#Область Строка_JSON

	ИначеЕсли Объект["ТипБазы" + ИдентификаторБазы] = 6 Тогда
	
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Видимость 							= Истина;
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Заголовок							= "Строка JSON";
		
		Элементы["ДекорацияТекстЗапроса" + ИдентификаторБазы].Видимость									= Ложь;
		Элементы["ГруппаТекстЗапроса" + ИдентификаторБазы + "Команды"].Видимость 						= Ложь;
		
		Элементы["ГруппаВариантПараметрыПодключенияКБазе" + ИдентификаторБазы].Видимость 				= Ложь;
		
		Элементы["ГруппаПараметрыПодключенияКФайлу" + ИдентификаторБазы].Видимость 						= Истина;
		Элементы["ГруппаПараметрыПодключенияКФайлуОбщие" + ИдентификаторБазы].Видимость					= Ложь;
		Элементы["ГруппаПараметрыПодключенияКФайлуXMLJSON" + ИдентификаторБазы].Видимость 				= Истина;
		Элементы["ГруппаПараметрыПодключенияКФайлуXML" + ИдентификаторБазы].Видимость 					= Ложь;
		Элементы["ГруппаПараметрыПодключенияКФайлуНеXML" + ИдентификаторБазы].Видимость					= Ложь;
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "НомерТаблицыВФайле"].Видимость		= Ложь;
		Элементы["ПодключениеКВнешнейБазе" + ИдентификаторБазы + "НомерТаблицыВФайле"].Заголовок		= Ложь;
		
		//Элементы["ГруппаПараметрыКолонокФайла" + ИдентификаторБазы].Видимость 						= Истина;
		Элементы["НастройкиФайла" + ИдентификаторБазы + "НомерКолонки"].Видимость						= Истина;
		
		Элементы["ГруппаСворачиватьТаблицу" + ИдентификаторБазы].Видимость 								= Истина;
		
		Элементы["НомерСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["НомерСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["НомерСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["ИмяСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 								= Истина;
		Элементы["ИмяСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Истина;
		Элементы["ИмяСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Истина;
				
		Элементы["ИспользоватьВКачествеКлючаУникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["ИспользоватьВКачествеКлюча2УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		Элементы["ИспользоватьВКачествеКлюча3УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Ложь;
		
		Элементы["ПриводитьКлючКСтроке" + ИдентификаторБазы].Видимость 									= Ложь;
		Элементы["ПриводитьКлюч2КСтроке" + ИдентификаторБазы].Видимость 								= Ложь;
		Элементы["ПриводитьКлюч3КСтроке" + ИдентификаторБазы].Видимость 								= Ложь;
		//Приведение производится просто к строке без указания длины
		Элементы["ДлинаКлючаПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ДлинаКлюча2ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["ДлинаКлюча3ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Ложь;
		
		Элементы["НастройкиФайла" + ИдентификаторБазы + "НомерКолонки"].Видимость						= Ложь;
		Элементы["НастройкиФайла" + ИдентификаторБазы + "ИмяКолонки"].Видимость							= Истина;
		
		Элементы["КомандаПроверитьВозможностьПодключенияКИсточнику" + ИдентификаторБазы].Видимость		= Ложь;
		
#КонецОбласти 

#Область _1С_8_текущая

	Иначе 
		
		Элементы["ГруппаВариантПараметрыПодключенияКБазе" + ИдентификаторБазы].Видимость 				= Ложь;
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Видимость 							= Истина;
		Элементы["ГруппаСтраницаТекстЗапроса" + ИдентификаторБазы].Заголовок							= "Текст запроса";
		Элементы["ДекорацияТекстЗапроса" + ИдентификаторБазы].Видимость									= Истина;
		Элементы["ГруппаТекстЗапроса" + ИдентификаторБазы + "Команды"].Видимость 						= Истина;
		
		Элементы["ГруппаПараметрыПодключенияКФайлу" + ИдентификаторБазы].Видимость 						= Ложь;
		//Элементы["ГруппаПараметрыКолонокФайла" + ИдентификаторБазы].Видимость 						= Ложь;
		Элементы["НастройкиФайла" + ИдентификаторБазы + "НомерКолонки"].Видимость						= Ложь;
		
		Элементы["ГруппаСворачиватьТаблицу" + ИдентификаторБазы].Видимость 								= Ложь;
		
		Элементы["НомерСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["НомерСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["НомерСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["ИмяСтолбцаСКлючомИзФайла" + ИдентификаторБазы].Видимость 								= Ложь;
		Элементы["ИмяСтолбцаСКлючом2ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		Элементы["ИмяСтолбцаСКлючом3ИзФайла" + ИдентификаторБазы].Видимость 							= Ложь;
		
		Элементы["ИспользоватьВКачествеКлючаУникальныйИдентификатор" + ИдентификаторБазы].Видимость		= Истина;
		Элементы["ИспользоватьВКачествеКлюча2УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Истина;
		Элементы["ИспользоватьВКачествеКлюча3УникальныйИдентификатор" + ИдентификаторБазы].Видимость 	= Истина;
		
		Элементы["ПриводитьКлючКСтроке" + ИдентификаторБазы].Видимость 									= Не Объект["ИспользоватьВКачествеКлючаУникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ПриводитьКлюч2КСтроке" + ИдентификаторБазы].Видимость 								= Не Объект["ИспользоватьВКачествеКлюча2УникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ПриводитьКлюч3КСтроке" + ИдентификаторБазы].Видимость 								= Не Объект["ИспользоватьВКачествеКлюча3УникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ДлинаКлючаПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Не Объект["ИспользоватьВКачествеКлючаУникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ДлинаКлюча2ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Не Объект["ИспользоватьВКачествеКлюча2УникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ДлинаКлюча3ПриПриведенииКСтроке" + ИдентификаторБазы].Видимость 						= Не Объект["ИспользоватьВКачествеКлюча3УникальныйИдентификатор" + ИдентификаторБазы];
		Элементы["ДлинаКлючаПриПриведенииКСтроке" + ИдентификаторБазы].ТолькоПросмотр 					= Не Объект["ПриводитьКлючКСтроке" + ИдентификаторБазы];
		Элементы["ДлинаКлюча2ПриПриведенииКСтроке" + ИдентификаторБазы].ТолькоПросмотр 					= Не Объект["ПриводитьКлюч2КСтроке" + ИдентификаторБазы];
		Элементы["ДлинаКлюча3ПриПриведенииКСтроке" + ИдентификаторБазы].ТолькоПросмотр 					= Не Объект["ПриводитьКлюч3КСтроке" + ИдентификаторБазы];
		
		Элементы["НастройкиФайла" + ИдентификаторБазы + "ИмяКолонки"].Видимость							= Ложь;
		
		Элементы["КомандаПроверитьВозможностьПодключенияКИсточнику" + ИдентификаторБазы].Видимость		= Ложь;
		
	КонецЕсли;
	
#КонецОбласти 


	ОбновитьВидимостьРеквизитовТЧ(ИдентификаторБазы);
	ОбновитьИтогиПоРеквизитамТЧ(ИдентификаторБазы);
					
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьВидимостьКлючейТЧ(Форсировать = Ложь)
	
	ОбновитьВидимостьРеквизитаТЧ("Ключ1");
	ОбновитьВидимостьРеквизитаТЧ("Ключ2");
	ОбновитьВидимостьРеквизитаТЧ("Ключ3");
		
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьВидимостьРеквизитовТЧ(ИдентификаторБазы = "")
	
	Если ПустаяСтрока(ИдентификаторБазы) Тогда
		ОбновитьВидимостьРеквизитаТЧ("ЧислоЗаписейА");
		ОбновитьВидимостьРеквизитаТЧ("ЧислоЗаписейБ");
	Иначе 
		ОбновитьВидимостьРеквизитаТЧ("ЧислоЗаписей" + ИдентификаторБазы);
	КонецЕсли;
	
	Для Счетчик = 1 По 5 Цикл
		
		Если ПустаяСтрока(ИдентификаторБазы) Тогда
			ОбновитьВидимостьРеквизитаТЧ("РеквизитА" + Счетчик);
			ОбновитьВидимостьРеквизитаТЧ("РеквизитБ" + Счетчик);
		Иначе
			ОбновитьВидимостьРеквизитаТЧ("Реквизит" + ИдентификаторБазы + Счетчик);
		КонецЕсли; 
		
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьВидимостьРеквизитаТЧ(ИмяРеквизита)
	
	ВидимостьКолонки = Объект["Видимость" + ИмяРеквизита];
	Элементы["РезультатКомандаВидимость" + ИмяРеквизита].Пометка = ВидимостьКолонки;
	
	Если ВРег(Лев(ИмяРеквизита, 4)) = "КЛЮЧ" Тогда
		НомерКлюча = Сред(ИмяРеквизита,5,1);
		Элементы["Результат" + ИмяРеквизита].Видимость = ВидимостьКолонки И Объект.ЧислоСтолбцовВКлюче >= Число(НомерКлюча);
		Элементы["РезультатТипСтолбца" + НомерКлюча + "Ключа"].Видимость = Объект.ОтображатьТипыСтолбцовКлюча И Объект["ВидимостьКлюч" + НомерКлюча] И Объект.ЧислоСтолбцовВКлюче >= Число(НомерКлюча);
	Иначе
		Элементы["Результат" + ИмяРеквизита].Видимость = ВидимостьКолонки;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьВидимостьДоступностьЭлементовРеляционнаяОперация(РежимОтображения = 0)
	
	Элементы.СравнитьДанные.Доступность = Объект.РеляционнаяОперация > 0;
	
	Для СчетчикОпераций = 1 По 7 Цикл 
		         	          		
		Если СчетчикОпераций = Объект.РеляционнаяОперация Тогда
			Если РежимОтображения = 1 Тогда
				ЭтаФорма["Операция" + СчетчикОпераций] = ЭтаФорма["АктивнаяОперацияА1"];
			ИначеЕсли РежимОтображения = 2 Тогда
				ЭтаФорма["Операция" + СчетчикОпераций] = ЭтаФорма["АктивнаяОперацияА" + (4 + ?(СчетчикОпераций > 1, СчетчикОпераций + 2, СчетчикОпераций - 1) % 2)];
			Иначе
				ЭтаФорма["Операция" + СчетчикОпераций] = ЭтаФорма["АктивнаяОперация" + СчетчикОпераций];
			КонецЕсли;
		Иначе
			Если РежимОтображения = 1 Тогда
				ЭтаФорма["Операция" + СчетчикОпераций] = ЭтаФорма["АктивнаяОперация" + СчетчикОпераций];
			ИначеЕсли РежимОтображения = 2 Тогда
				ЭтаФорма["Операция" + СчетчикОпераций] = ЭтаФорма["АктивнаяОперацияА" + (2 + ?(СчетчикОпераций > 1, СчетчикОпераций + 2, СчетчикОпераций - 1) % 2)];
			Иначе
				ЭтаФорма["Операция" + СчетчикОпераций] = ЭтаФорма["НеактивнаяОперация" + СчетчикОпераций];
			КонецЕсли;
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьВидимостьДоступностьЭлементовВыводИЗапретаВыводаСтрок()
	
	Элементы.ЛогическийОператорДляУсловийВыводаСтрок.ТолькоПросмотр 		= Объект.КодДляВыводаСтрокРедактируетсяВручную;
	Элементы.УсловияВыводаСтрок.ТолькоПросмотр 								= Объект.КодДляВыводаСтрокРедактируетсяВручную;
	Элементы.ЛогическийОператорДляУсловийЗапретаВыводаСтрок.ТолькоПросмотр 	= Объект.КодДляЗапретаВыводаСтрокРедактируетсяВручную;
	Элементы.УсловияЗапретаВыводаСтрок.ТолькоПросмотр 						= Объект.КодДляЗапретаВыводаСтрокРедактируетсяВручную;
	
	Элементы.КодДляВыводаСтрок.ТолькоПросмотр 								= Не Объект.КодДляВыводаСтрокРедактируетсяВручную;
	Элементы.КодДляЗапретаВыводаСтрок.ТолькоПросмотр 						= Не Объект.КодДляЗапретаВыводаСтрокРедактируетсяВручную;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьВидимостьДоступностьВкладкиУсловияВыводаСтрок()
	
	Элементы.ГруппаУсловияВыводаСтрок.ЦветФона = ?(Объект.УсловияВыводаСтрокОтключены, WebЦвета.Розовый, ЦветФонаФормыПоУмолчанию);;
		
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьВидимостьДоступностьВкладкиУсловияЗапретаВыводаСтрок()
	
	Элементы.ГруппаУсловияЗапретаВыводаСтрок.ЦветФона = ?(Объект.УсловияЗапретаВыводаСтрокОтключены, WebЦвета.Розовый, ЦветФонаФормыПоУмолчанию);;
		
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьВидимостьДоступностьПорядкаСортировкиТаблицыРасхождений()
	
	Элементы.ПорядокСортировкиТаблицыРасхождений.ТолькоПросмотр = НЕ Объект.СортироватьТаблицуРасхождений;
	
КонецПроцедуры
#КонецОбласти 


#Область Настройки

#Область Сохранение
&НаКлиенте
Процедура СохранитьНастройкиВФайлНаКлиенте(СохранятьТабличныеДокументы = Ложь)
	
	Режим = РежимДиалогаВыбораФайла.Сохранение;
	ДиалогВыбора = Новый ДиалогВыбораФайла(Режим);
	ДиалогВыбора.ПолноеИмяФайла = Объект.Заголовок;
	Фильтр = "Файл xml (*.xml)|*.xml";
	ДиалогВыбора.Фильтр = Фильтр;
	ДиалогВыбора.Заголовок = "Укажите файл для сохранения настроек";   

	ДиалогВыбора.Показать(Новый ОписаниеОповещения("СохранитьНастройкиВФайлНаКлиентеЗавершение", ЭтаФорма, Новый Структура("ДиалогВыбора,СохранятьТабличныеДокументы", ДиалогВыбора, СохранятьТабличныеДокументы)));
	
КонецПроцедуры

&НаКлиенте
Процедура СохранитьНастройкиВФайлНаКлиентеЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	ДиалогВыбора = ДополнительныеПараметры.ДиалогВыбора;
	СохранятьТабличныеДокументы = ДополнительныеПараметры.СохранятьТабличныеДокументы;
	                             	
	Если (ВыбранныеФайлы <> Неопределено) Тогда
		
		Объект.Заголовок = Сред(ДиалогВыбора.ПолноеИмяФайла, СтрНайти(ДиалогВыбора.ПолноеИмяФайла, "\", НаправлениеПоиска.СКонца) + 1);
		Адрес = СохранитьНастройкиВФайлНаСервере(СохранятьТабличныеДокументы);
		ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
		ДвоичныеДанные.Записать(ДиалогВыбора.ПолноеИмяФайла);
		
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура СохранитьНастройкиВБазуНаКлиенте(СохранятьТабличныеДокументы = Ложь);
	
	Если ЗначениеЗаполнено(Объект.СвязаннаяОперацияСравненияДанных)  Тогда
	
		ПоказатьВопрос(Новый ОписаниеОповещения("СохранитьВСвязаннуюОперациюЗавершение", ЭтотОбъект, Новый Структура("ВыбратьЭлементСправочникаДляСохранения,СохранятьТабличныеДокументы",Истина,СохранятьТабличныеДокументы)), "Обновить элемент справочника """ + Объект.СвязаннаяОперацияСравненияДанных + """?", РежимДиалогаВопрос.ДаНет);
		
	Иначе
		
		ОткрытьФормуВыбораОперацииДляЗаписи(СохранятьТабличныеДокументы);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СохранитьВСвязаннуюОперациюЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	СохранятьТабличныеДокументы = ДополнительныеПараметры.СохранятьТабличныеДокументы;
	ВыбратьЭлементСправочникаДляСохранения = ДополнительныеПараметры.ВыбратьЭлементСправочникаДляСохранения;
	ПриЗакрытииФормы = ДополнительныеПараметры.Свойство("ПриЗакрытииФормы") И ДополнительныеПараметры.ПриЗакрытииФормы;
	
	Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
		
		СохранитьНастройкиВБазуНаСервере(Объект.СвязаннаяОперацияСравненияДанных, СохранятьТабличныеДокументы);
		ОбновитьЗаголовок();
		
	//Нажатие кнопки Сохранить в базу
	ИначеЕсли ВыбратьЭлементСправочникаДляСохранения = Истина И ПриЗакрытииФормы = Ложь Тогда
		
		ОткрытьФормуВыбораОперацииДляЗаписи();
				
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура СохранитьВВыбраннуюОперациюЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	СохранятьТабличныеДокументы = ДополнительныеПараметры.СохранятьТабличныеДокументы;
	
	ВыбранныйЭлемент = Результат;
	Если ВыбранныйЭлемент <> Неопределено Тогда
		
		СохранитьНастройкиВБазуНаСервере(ВыбранныйЭлемент, СохранятьТабличныеДокументы);
		ОбновитьЗаголовок();
				
	КонецЕсли;

КонецПроцедуры

&НаСервере
Функция СохранитьНастройкиВФайлНаСервере(СохранятьТабличныеДокументы)
	
	ПутьКФайлу = ПолучитьИмяВременногоФайла("xml");
	Данные = ПолучитьДанныеВВидеСтруктуры(СохранятьТабличныеДокументы); 
	ХранилищеВнешнее = Новый ХранилищеЗначения(Данные);
	ЗаписьXML = Новый ЗаписьXML;
	ЗаписьXML.ОткрытьФайл(ПутьКФайлу, "UTF-8");
	СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ХранилищеВнешнее);
	ЗаписьXML.Закрыть();
	Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ПутьКФайлу));
	УдалитьФайлы(ПутьКФайлу);
	
	Возврат Адрес;
			
КонецФункции

&НаСервере
Процедура СохранитьНастройкиВБазуНаСервере(ВыбранныйЭлемент, СохранятьТабличныеДокументы = Ложь)

	ФормаОбъект = РеквизитФормыВЗначение("Объект");
	ФормаОбъект.СохранитьНастройкиВБазуНаСервере(ВыбранныйЭлемент, СохранятьТабличныеДокументы);
	ЗначениеВРеквизитФормы(ФормаОбъект, "Объект");
		
КонецПроцедуры
#КонецОбласти 


#Область Загрузка
&НаКлиенте
Процедура ОткрытьНастройкиИзФайлаНаКлиенте(Знач Оповещение, ЗагружатьТабличныеДокументы = Ложь)

	Режим = РежимДиалогаВыбораФайла.Открытие;
	ДиалогВыбора = Новый ДиалогВыбораФайла(Режим);
	ДиалогВыбора.ПолноеИмяФайла = "";
	Фильтр = "Файл xml (*.xml)|*.xml";
	ДиалогВыбора.Фильтр = Фильтр;
	ДиалогВыбора.Заголовок = "Укажите файл с настройками";   

	ДиалогВыбора.Показать(Новый ОписаниеОповещения("ОткрытьНастройкиИзФайлаНаКлиентеЗавершение", ЭтаФорма, Новый Структура("ДиалогВыбора, Оповещение, ЗагружатьТабличныеДокументы", ДиалогВыбора, Оповещение, ЗагружатьТабличныеДокументы)));

КонецПроцедуры

&НаКлиенте
Процедура ОткрытьНастройкиИзФайлаНаКлиентеЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	ДиалогВыбора = ДополнительныеПараметры.ДиалогВыбора;
	Оповещение = ДополнительныеПараметры.Оповещение;	
	ЗагружатьТабличныеДокументы = ДополнительныеПараметры.ЗагружатьТабличныеДокументы;	
	
	Если (ВыбранныеФайлы <> Неопределено) Тогда
		
		Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ДиалогВыбора.ПолноеИмяФайла));
		ОткрытьНастройкиИзФайлаНаСервере(Адрес, ЗагружатьТабличныеДокументы);
		ПервыйСимвол = СтрНайти(ДиалогВыбора.ПолноеИмяФайла, "\", НаправлениеПоиска.СКонца) + 1;
		ПоследнийСимвол = СтрНайти(ДиалогВыбора.ПолноеИмяФайла, ".", НаправлениеПоиска.СКонца);
		Объект.Заголовок = Сред(ДиалогВыбора.ПолноеИмяФайла, ПервыйСимвол, ПоследнийСимвол - ПервыйСимвол);
		ОбновитьВидимостьДоступностьЭлементовФормы();
		ОбновитьВидимостьДоступностьЭлементовРеляционнаяОперация();
		ОбновитьВидимостьДоступностьЭлементовВыводИЗапретаВыводаСтрок();
		ОбновитьВидимостьДоступностьПорядкаСортировкиТаблицыРасхождений();
		
	КонецЕсли;
	
	ВыполнитьОбработкуОповещения(Оповещение);

КонецПроцедуры

&НаСервере
Процедура ОткрытьНастройкиИзФайлаНаСервере(Адрес, ЗагружатьТабличныеДокументы = Ложь)
	
	ПутьКФайлу = ПолучитьИмяВременногоФайла("xml");
	ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
	ДвоичныеДанные.Записать(ПутьКФайлу);
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.ОткрытьФайл(ПутьКФайлу,,,"UTF-8");
	ХранилищеВнешнее = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
	Данные = ХранилищеВнешнее.Получить();
	ЗаполнитьЗначенияСвойств(Объект, Данные);
	
	Если Данные.Свойство("ТЗУсловияВыводаСтрок") Тогда
		Объект.УсловияВыводаСтрок.Загрузить(Данные.ТЗУсловияВыводаСтрок);
	Иначе
		Объект.УсловияВыводаСтрок.Очистить();
	КонецЕсли;
	
	Если Данные.Свойство("ТЗУсловияЗапретаВыводаСтрок") Тогда
		Объект.УсловияЗапретаВыводаСтрок.Загрузить(Данные.ТЗУсловияЗапретаВыводаСтрок);
	Иначе
		Объект.УсловияЗапретаВыводаСтрок.Очистить();
	КонецЕсли;
	
	Если Данные.Свойство("ТЗНастройкиФайлаА") Тогда
		Объект.НастройкиФайлаА.Загрузить(Данные.ТЗНастройкиФайлаА);
	Иначе
		Объект.НастройкиФайлаА.Очистить();
	КонецЕсли;
	
	Если Данные.Свойство("ТЗНастройкиФайлаБ") Тогда
		Объект.НастройкиФайлаБ.Загрузить(Данные.ТЗНастройкиФайлаБ);
	Иначе
		Объект.НастройкиФайлаБ.Очистить();
	КонецЕсли;
	
	Если Данные.Свойство("ТЗСписокПараметровА") Тогда
		Объект.СписокПараметровА.Загрузить(Данные.ТЗСписокПараметровА);
	Иначе
		Объект.СписокПараметровА.Очистить();
	КонецЕсли;
	
	Если Данные.Свойство("ТЗСписокПараметровБ") Тогда
		Объект.СписокПараметровБ.Загрузить(Данные.ТЗСписокПараметровБ);
	Иначе
		Объект.СписокПараметровБ.Очистить();
	КонецЕсли;
	
	Если ЗагружатьТабличныеДокументы Тогда
		Если Объект.ТипБазыА = 4 Тогда
			Попытка
				Если Данные.Свойство("ТаблицаАХранилище") Тогда
					Объект.ТаблицаА = Данные.ТаблицаАХранилище.Получить();
				КонецЕсли;
			Исключение
			КонецПопытки; 
		КонецЕсли;
		
		Если Объект.ТипБазыБ = 4 Тогда
			Попытка
				Если Данные.Свойство("ТаблицаБХранилище") Тогда
					Объект.ТаблицаБ = Данные.ТаблицаБХранилище.Получить();
				КонецЕсли;
			Исключение
			КонецПопытки;
		КонецЕсли;
	КонецЕсли;
	
	ЧтениеXML.Закрыть();
	УдалитьФайлы(ПутьКФайлу);
	
	Объект.Результат.Очистить();
	
КонецПроцедуры

&НаСервере
Процедура ОткрытьНастройкиИзБазыНаСервере(ВыбранныйЭлемент, ЗагружатьТабличныеДокументы = Ложь)
	
	ФормаОбъект = РеквизитФормыВЗначение("Объект");
	ФормаОбъект.ОткрытьНастройкиИзБазыНаСервере(ВыбранныйЭлемент, ЗагружатьТабличныеДокументы);
	ЗначениеВРеквизитФормы(ФормаОбъект, "Объект");
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьНастройкиИзФайлаЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	ОбновитьВидимостьДоступностьЭлементовФормы();
	ОбновитьВидимостьДоступностьЭлементовРеляционнаяОперация();
	ОбновитьВидимостьДоступностьЭлементовВыводИЗапретаВыводаСтрок();

КонецПроцедуры

&НаКлиенте
Процедура ОткрытьФормуВыбораОперацииДляЗаписи(СохранятьТабличныеДокументы = Ложь)

	ВыбранныйЭлемент = Неопределено;
	ОткрытьФорму("Справочник.ВС_ОперацииСравненияДанных.ФормаВыбора",,,,,, Новый ОписаниеОповещения("СохранитьВВыбраннуюОперациюЗавершение", ЭтаФорма, Новый Структура("СохранятьТабличныеДокументы",СохранятьТабличныеДокументы)), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьНастройкиИзБазыЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	ВыбранныйЭлемент = Результат;
	ЗагружатьТабличныеДокументы = ДополнительныеПараметры <> Неопределено И ДополнительныеПараметры.Свойство("ЗагружатьТабличныеДокументы") И ДополнительныеПараметры.ЗагружатьТабличныеДокументы;
	
	Если ВыбранныйЭлемент <> Неопределено Тогда
		
		ОткрытьНастройкиИзБазыНаСервере(ВыбранныйЭлемент, ЗагружатьТабличныеДокументы);
		ОбновитьВидимостьДоступностьЭлементовФормы();
		ОбновитьВидимостьДоступностьЭлементовРеляционнаяОперация();
		ОбновитьВидимостьДоступностьЭлементовВыводИЗапретаВыводаСтрок();
		
	КонецЕсли;

КонецПроцедуры
#КонецОбласти 

#КонецОбласти 


#Область Обработка_выбора_параметра
&НаКлиенте
Процедура ПриНачалеВыбораЗначенияПараметра(ИдентификаторБазы, СтандартнаяОбработка)
	
	Если Объект["ТипБазы" + ИдентификаторБазы] = 1 Тогда
		СтандартнаяОбработка = Ложь;
		СписокДоступныхТипов = Новый СписокЗначений;
		СписокДоступныхТипов.Добавить("Число");
		СписокДоступныхТипов.Добавить("Строка");
		СписокДоступныхТипов.Добавить("Дата");
		СписокДоступныхТипов.Добавить("Булево");
		ВыбранныйТип = Неопределено;

		ПоказатьВыборИзСписка(Новый ОписаниеОповещения("ПриНачалеВыбораЗначенияПараметраЗавершение4", ЭтаФорма, Новый Структура("ИдентификаторБазы", ИдентификаторБазы)), СписокДоступныхТипов, Элементы["СписокПараметров" + ИдентификаторБазы + "ЗначениеПараметра"]);
	
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ПриНачалеВыбораЗначенияПараметраЗавершение4(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
	
	ИдентификаторБазы = ДополнительныеПараметры.ИдентификаторБазы;
	
	
	ВыбранныйТип = ВыбранныйЭлемент;
	Если ВыбранныйТип = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = Элементы["СписокПараметров" + ИдентификаторБазы].ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		ТекущееЗначениеПараметра = Неопределено; 
	Иначе
		ТекущееЗначениеПараметра =  ТекущиеДанные.ЗначениеПараметра;
	КонецЕсли;
	
	Если ВыбранныйТип.Значение = "Число" Тогда
		ПоказатьВводЧисла(Новый ОписаниеОповещения("ПриНачалеВыбораЗначенияПараметраЗавершение3", ЭтаФорма, Новый Структура("ВыбранныйТип, ТекущиеДанные, ТекущееЗначениеПараметра", ВыбранныйТип, ТекущиеДанные, ТекущееЗначениеПараметра)), ТекущееЗначениеПараметра);
		Возврат;
	ИначеЕсли ВыбранныйТип.Значение = "Строка" Тогда
		ПоказатьВводСтроки(Новый ОписаниеОповещения("ПриНачалеВыбораЗначенияПараметраЗавершение2", ЭтаФорма, Новый Структура("ВыбранныйТип, ТекущиеДанные, ТекущееЗначениеПараметра", ВыбранныйТип, ТекущиеДанные, ТекущееЗначениеПараметра)), ТекущееЗначениеПараметра);
		Возврат;
	ИначеЕсли ВыбранныйТип.Значение = "Дата" Тогда
		ПоказатьВводДаты(Новый ОписаниеОповещения("ПриНачалеВыбораЗначенияПараметраЗавершение1", ЭтаФорма, Новый Структура("ВыбранныйТип, ТекущиеДанные, ТекущееЗначениеПараметра", ВыбранныйТип, ТекущиеДанные, ТекущееЗначениеПараметра)), ТекущееЗначениеПараметра);
		Возврат;
	ИначеЕсли ВыбранныйТип.Значение = "Булево" Тогда
		ПоказатьВводЗначения(Новый ОписаниеОповещения("ПриНачалеВыбораЗначенияПараметраЗавершение", ЭтаФорма, Новый Структура("ТекущиеДанные, ТекущееЗначениеПараметра", ТекущиеДанные, ТекущееЗначениеПараметра)), ТекущееЗначениеПараметра,,Новый ОписаниеТипов("Булево"));
		Возврат;
	КонецЕсли;
	
	ПриНачалеВыбораЗначенияПараметраФрагмент3(ТекущееЗначениеПараметра, ТекущиеДанные);

КонецПроцедуры

&НаКлиенте
Процедура ПриНачалеВыбораЗначенияПараметраЗавершение3(Число, ДополнительныеПараметры) Экспорт
	
	ВыбранныйТип = ДополнительныеПараметры.ВыбранныйТип;
	ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
	ТекущееЗначениеПараметра = ?(Число = Неопределено, ДополнительныеПараметры.ТекущееЗначениеПараметра, Число);
	
	
	Если Не (Число <> Неопределено) Тогда
		Возврат;
	КонецЕсли;
	
	ПриНачалеВыбораЗначенияПараметраФрагмент3(ТекущееЗначениеПараметра, ТекущиеДанные);

КонецПроцедуры

&НаКлиенте
Процедура ПриНачалеВыбораЗначенияПараметраФрагмент3(Знач ТекущееЗначениеПараметра, Знач ТекущиеДанные)
	
	ПриНачалеВыбораЗначенияПараметраФрагмент2(ТекущееЗначениеПараметра, ТекущиеДанные);

КонецПроцедуры

&НаКлиенте
Процедура ПриНачалеВыбораЗначенияПараметраЗавершение2(Строка, ДополнительныеПараметры) Экспорт
	
	ВыбранныйТип = ДополнительныеПараметры.ВыбранныйТип;
	ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
	ТекущееЗначениеПараметра = ?(Строка = Неопределено, ДополнительныеПараметры.ТекущееЗначениеПараметра, Строка);
	
	
	Если Не (Строка <> Неопределено) Тогда
		Возврат;
	КонецЕсли;
	
	ПриНачалеВыбораЗначенияПараметраФрагмент2(ТекущееЗначениеПараметра, ТекущиеДанные);

КонецПроцедуры

&НаКлиенте
Процедура ПриНачалеВыбораЗначенияПараметраФрагмент2(Знач ТекущееЗначениеПараметра, Знач ТекущиеДанные)
	
	ПриНачалеВыбораЗначенияПараметраФрагмент1(ТекущееЗначениеПараметра, ТекущиеДанные);

КонецПроцедуры

&НаКлиенте
Процедура ПриНачалеВыбораЗначенияПараметраЗавершение1(Дата, ДополнительныеПараметры) Экспорт
	
	ВыбранныйТип = ДополнительныеПараметры.ВыбранныйТип;
	ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
	ТекущееЗначениеПараметра = ?(Дата = Неопределено, ДополнительныеПараметры.ТекущееЗначениеПараметра, Дата);
	
	
	Если Не (Дата <> Неопределено) Тогда
		Возврат;
	КонецЕсли;
	
	ПриНачалеВыбораЗначенияПараметраФрагмент1(ТекущееЗначениеПараметра, ТекущиеДанные);

КонецПроцедуры

&НаКлиенте
Процедура ПриНачалеВыбораЗначенияПараметраФрагмент1(Знач ТекущееЗначениеПараметра, Знач ТекущиеДанные)
	
	ПриНачалеВыбораЗначенияПараметраФрагмент(ТекущееЗначениеПараметра, ТекущиеДанные);

КонецПроцедуры

&НаКлиенте
Процедура ПриНачалеВыбораЗначенияПараметраЗавершение(Значение, ДополнительныеПараметры) Экспорт
	
	ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
	ТекущееЗначениеПараметра = ?(Значение = Неопределено, ДополнительныеПараметры.ТекущееЗначениеПараметра, Значение);
	
	
	Если Не (Значение <> Неопределено) Тогда
		Возврат;
	КонецЕсли;
	
	ПриНачалеВыбораЗначенияПараметраФрагмент(ТекущееЗначениеПараметра, ТекущиеДанные);

КонецПроцедуры

&НаКлиенте
Процедура ПриНачалеВыбораЗначенияПараметраФрагмент(Знач ТекущееЗначениеПараметра, Знач ТекущиеДанные)
	
	ТекущиеДанные.ЗначениеПараметра = ТекущееЗначениеПараметра;

КонецПроцедуры
#КонецОбласти 

#КонецОбласти


#Область Команды
&НаКлиенте
Процедура СравнитьДанные(Команда)
	
	СравнитьДанныеНаКлиенте();
	
КонецПроцедуры

&НаКлиенте
Процедура КонструкторЗапросаБ(Команда)
	ОткрытьКонструкторЗапроса("Б");
КонецПроцедуры

&НаКлиенте
Процедура КонструкторЗапросаА(Команда)
	ОткрытьКонструкторЗапроса("А");
КонецПроцедуры

&НаКлиенте
Процедура СохранитьНастройкиВФайл(Команда)
	
	СохранитьНастройкиВФайлНаКлиенте();
	
КонецПроцедуры

&НаКлиенте
Процедура СохранитьНастройкиИТабличныеДокументыВФайл(Команда)
	
	СохранитьНастройкиВФайлНаКлиенте(Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура СохранитьНастройкиВБазу(Команда)
	
	СохранитьНастройкиВБазуНаКлиенте();
		
КонецПроцедуры

&НаКлиенте
Процедура СохранитьНастройкиИТабличныеДокументыВБазу(Команда)
	
	СохранитьНастройкиВБазуНаКлиенте(Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьНастройкиИзФайла(Команда)
	
	ОткрытьНастройкиИзФайлаНаКлиенте(Новый ОписаниеОповещения("ОткрытьНастройкиИзФайлаЗавершение", ЭтаФорма));
			
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьНастройкиИТабличныеДокументыИзФайла(Команда)
	
	ОткрытьНастройкиИзФайлаНаКлиенте(Новый ОписаниеОповещения("ОткрытьНастройкиИзФайлаЗавершение", ЭтаФорма), Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьНастройкиИзБазы(Команда)
	
	ВыбранныйЭлемент = Неопределено; 
	
	ОткрытьФорму("Справочник.ВС_ОперацииСравненияДанных.ФормаВыбора",,,,,, Новый ОписаниеОповещения("ОткрытьНастройкиИзБазыЗавершение", ЭтаФорма), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьНастройкиИТабличныеДокументыИзБазы(Команда)
	
	ВыбранныйЭлемент = Неопределено; 
	
	ОткрытьФорму("Справочник.ВС_ОперацииСравненияДанных.ФормаВыбора",,,,,, Новый ОписаниеОповещения("ОткрытьНастройкиИзБазыЗавершение", ЭтаФорма, Новый Структура("ЗагружатьТабличныеДокументы", Истина)), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаПолучитьПараметрыЗапросаА(Команда)
	
	ПолучитьПараметрыИзЗапросаНаСервере("А");
	Элементы.ГруппаСтраницыБазаА.ТекущаяСтраница = Элементы.ГруппаСтраницаПараметрыЗапросаА;
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаПолучитьПараметрыЗапросаБ(Команда)
	
	ПолучитьПараметрыИзЗапросаНаСервере("Б");
	Элементы.ГруппаСтраницыБазаБ.ТекущаяСтраница = Элементы.ГруппаСтраницаПараметрыЗапросаБ;
	
КонецПроцедуры

&НаКлиенте
Процедура ПосетитьСтраницуАвтора(Команда)

	НачатьЗапускПриложения(Новый ОписаниеОповещения("ПосетитьСтраницу", ЭтаФорма), "http://sertakov.by");
	
КонецПроцедуры

&НаКлиенте
Процедура ПосетитьСтраницуОбработки(Команда)
	
	НачатьЗапускПриложения(Новый ОписаниеОповещения("ПосетитьСтраницу", ЭтаФорма), "https://infostart.ru/public/581794/");
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаСкачатьОбработку(Команда)
	
	НачатьЗапускПриложения(Новый ОписаниеОповещения("ПосетитьСтраницу", ЭтаФорма), "http://sertakov.by/work/KSD.epf");
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаПредварительныйПросмотрИсточникаА(Команда)
	
	ОбновитьВидимостьДоступностьЭлементовРеляционнаяОперация(1);
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаПредварительныйПросмотрИсточникаБ(Команда)
	
	ОбновитьВидимостьДоступностьЭлементовРеляционнаяОперация(2);
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаПредварительныйПросмотрИсточникаАВсеСтроки(Команда)	
	
	ПредварительныйПросмотрИсточникаНаКлиенте("А");
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаПредварительныйПросмотрИсточникаА100Строк(Команда)
	ПредварительныйПросмотрИсточникаНаКлиенте("А", 100);
КонецПроцедуры

&НаКлиенте
Процедура КомандаПредварительныйПросмотрИсточникаБ100Строк(Команда)
	ПредварительныйПросмотрИсточникаНаКлиенте("Б", 100);
КонецПроцедуры

&НаКлиенте
Процедура КомандаПредварительныйПросмотрИсточникаБВсеСтроки(Команда)
	ПредварительныйПросмотрИсточникаНаКлиенте("Б");
КонецПроцедуры

&НаКлиенте
Процедура КомандаПредварительныйПросмотрИсточникаАДубликаты(Команда)
	ПредварительныйПросмотрИсточникаНаКлиенте("А", , Истина);
КонецПроцедуры

&НаКлиенте
Процедура КомандаПредварительныйПросмотрИсточникаБДубликаты(Команда)
	ПредварительныйПросмотрИсточникаНаКлиенте("Б", , Истина);
КонецПроцедуры

&НаКлиенте
Процедура КомандаПредварительныйПросмотрИсточникаА1000Строк(Команда)
	ПредварительныйПросмотрИсточникаНаКлиенте("А", 1000);
КонецПроцедуры

&НаКлиенте
Процедура КомандаПредварительныйПросмотрИсточникаБ1000Строк(Команда)
	ПредварительныйПросмотрИсточникаНаКлиенте("Б", 1000);
КонецПроцедуры

#КонецОбласти


#Область Обработчики_событий
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ЧислоРеквизитов = 5;
	
	ЦветФонаФормыПоУмолчанию = ЦветаСтиля.ЦветФонаФормы;
	
	Если Параметры.Свойство("ПользовательскийРежим") И Параметры.ПользовательскийРежим Тогда
		Объект.ПользовательскийРежим = Истина;
	КонецЕсли;
	
	Если Параметры.Свойство("ОперацияСравненияДанных") И ЗначениеЗаполнено(Параметры.ОперацияСравненияДанных) Тогда
		
		Объект.СвязаннаяОперацияСравненияДанных = Параметры.ОперацияСравненияДанных;
		ФормаОбъект = РеквизитФормыВЗначение("Объект");
		ФормаОбъект.ОткрытьНастройкиИзБазыНаСервере(Объект.СвязаннаяОперацияСравненияДанных);
		ЗначениеВРеквизитФормы(ФормаОбъект, "Объект");
				
	Иначе 
		
		Объект.ВерсияПлатформыВнешнейБазыА = "V83";
		Объект.ВерсияПлатформыВнешнейБазыБ = "V83";
		
		Объект.ЧислоСтолбцовВКлюче = 1;
		Объект.ТипПериода = 0;
		Объект.ЗначениеАбсолютногоПериода.ДатаНачала = НачалоМесяца(ТекущаяДата());
		Объект.ЗначениеАбсолютногоПериода.ДатаОкончания = КонецДня(ТекущаяДата());
		Объект.ЗначениеОтносительногоПериода = 0;
		Объект.ЗначениеПодчиненногоОтносительногоПериода = 0;
		Объект.ДискретностьОтносительногоПериода = "месяц";
		Объект.ДискретностьПодчиненногоОтносительногоПериода = "месяц";
		Объект.ПодключениеКВнешнейБазеАДрайверSQL = "SQL Server";
		Объект.ПодключениеКВнешнейБазеБДрайверSQL = "SQL Server";
		Объект.НомерПервойСтрокиФайлаА = 1;
		Объект.НомерПервойСтрокиФайлаБ = 1;
		Объект.ЧислоСтрокСПустымиКлючамиДляПрерыванияЧтения = 2;
		Объект.ПодключениеКВнешнейБазеАУстройствоХраненияФайла = 0;
		Объект.ПодключениеКВнешнейБазеБУстройствоХраненияФайла = 0;
		Объект.ПодключениеКВнешнейБазеАНомерТаблицыВФайле = 1;
		Объект.ПодключениеКВнешнейБазеБНомерТаблицыВФайле = 1;
		
		Объект.ВидимостьКлюч1 = Истина;
		Объект.ВидимостьКлюч2 = Объект.ЧислоСтолбцовВКлюче > 1;
		Объект.ВидимостьКлюч3 = Объект.ЧислоСтолбцовВКлюче > 2;
		Объект.ВидимостьЧислоЗаписейА = Истина;
		Объект.ВидимостьЧислоЗаписейБ = Истина;
		
		Для Счетчик = 1 По ЧислоРеквизитов Цикл
			Объект["ВидимостьРеквизитА" + Счетчик] = Истина;
			Объект["ВидимостьРеквизитБ" + Счетчик] = Истина;
		КонецЦикла;
		
		Для Счетчик = 1 По 20 Цикл 
			
			Объект.ТаблицаА.Область(1,Счетчик,1,Счетчик).Текст = Счетчик;
			Объект.ТаблицаБ.Область(1,Счетчик,1,Счетчик).Текст = Счетчик;
			
		КонецЦикла;
		
	КонецЕсли;
		
	Пример1 = "КлючТек = Лев(КлючТек,10);";
	Пример2 = "КлючТек = Число(КлючТек) + 1;";
	Пример3 = "Если Лев(КлючТек,1) = ""#"" Тогда КлючТек = Сред(КлючТек, 2); КонецЕсли;";
	Пример4 = "КлючТек = Прав(""0000000000"" + КлючТек, 10);";
	Пример5 = "КлючТек = СтрЗаменить(КлючТек, ""_"", """");";
	Пример6 = "КлючТек = ?(ЗначениеЗаполнено(КлючТек), КлючТек, ""<>"");";
	
	Если Объект.ПользовательскийРежим Тогда
		
		Элементы.ГруппаШапкаСкрываемыеРеквизиты.Видимость = Ложь;
		Элементы.ГруппаБазаАСтраница.Видимость = Ложь;
		Элементы.ГруппаБазаБСтраница.Видимость = Ложь;
		Элементы.ГруппаНастройкиВывода.Видимость = Ложь;
		Элементы.ГруппаОсновная.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
		Элементы.РезультатКомандаВыгрузитьРезультатВФайлНаСервере.Видимость = Ложь;
		Элементы.РезультатГруппаВидимостьСтолбцовКлюча.Видимость = Ложь;
				
	Иначе		
	
		МакетКартинкаАктивнаяОперация1 		= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперация1");
		МакетКартинкаНеактивнаяОперация1 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаНеактивнаяОперация1");
		МакетКартинкаАктивнаяОперация2 		= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперация2");
		МакетКартинкаНеактивнаяОперация2 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаНеактивнаяОперация2");
		МакетКартинкаАктивнаяОперация3 		= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперация3");
		МакетКартинкаНеактивнаяОперация3 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаНеактивнаяОперация3");
		МакетКартинкаАктивнаяОперация4 		= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперация4");
		МакетКартинкаНеактивнаяОперация4 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаНеактивнаяОперация4");
		МакетКартинкаАктивнаяОперация5 		= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперация5");
		МакетКартинкаНеактивнаяОперация5 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаНеактивнаяОперация5");
		МакетКартинкаАктивнаяОперация6 		= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперация6");
		МакетКартинкаНеактивнаяОперация6 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаНеактивнаяОперация6");
		МакетКартинкаАктивнаяОперация7 		= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперация7");
		МакетКартинкаНеактивнаяОперация7 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаНеактивнаяОперация7");
		МакетКартинкаАктивнаяОперацияА1 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперацияА1");
		МакетКартинкаАктивнаяОперацияА2 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперацияА2");
		МакетКартинкаАктивнаяОперацияА3 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперацияА3");
		МакетКартинкаАктивнаяОперацияА4 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперацияА4");
		МакетКартинкаАктивнаяОперацияА5 	= РеквизитФормыВЗначение("Объект").ПолучитьМакет("КартинкаАктивнаяОперацияА5");
					
		АктивнаяОперация1 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперация1, УникальныйИдентификатор);
		НеактивнаяОперация1 = 	ПоместитьВоВременноеХранилище(МакетКартинкаНеактивнаяОперация1, УникальныйИдентификатор);
		АктивнаяОперация2 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперация2, УникальныйИдентификатор);
		НеактивнаяОперация2 = 	ПоместитьВоВременноеХранилище(МакетКартинкаНеактивнаяОперация2, УникальныйИдентификатор);
		АктивнаяОперация3 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперация3, УникальныйИдентификатор);
		НеактивнаяОперация3 = 	ПоместитьВоВременноеХранилище(МакетКартинкаНеактивнаяОперация3, УникальныйИдентификатор);
		АктивнаяОперация4 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперация4, УникальныйИдентификатор);
		НеактивнаяОперация4 = 	ПоместитьВоВременноеХранилище(МакетКартинкаНеактивнаяОперация4, УникальныйИдентификатор);
		АктивнаяОперация5 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперация5, УникальныйИдентификатор);
		НеактивнаяОперация5 = 	ПоместитьВоВременноеХранилище(МакетКартинкаНеактивнаяОперация5, УникальныйИдентификатор);
		АктивнаяОперация6 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперация6, УникальныйИдентификатор);
		НеактивнаяОперация6 = 	ПоместитьВоВременноеХранилище(МакетКартинкаНеактивнаяОперация6, УникальныйИдентификатор);
		АктивнаяОперация7 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперация7, УникальныйИдентификатор);
		НеактивнаяОперация7 = 	ПоместитьВоВременноеХранилище(МакетКартинкаНеактивнаяОперация7, УникальныйИдентификатор); 
		АктивнаяОперацияА1 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперацияА1, УникальныйИдентификатор);
		АктивнаяОперацияА2 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперацияА2, УникальныйИдентификатор);
		АктивнаяОперацияА3 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперацияА3, УникальныйИдентификатор);
		АктивнаяОперацияА4 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперацияА4, УникальныйИдентификатор);
		АктивнаяОперацияА5 = 	ПоместитьВоВременноеХранилище(МакетКартинкаАктивнаяОперацияА5, УникальныйИдентификатор);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ОбновитьВидимостьДоступностьЭлементовФормы();
	ОбновитьВидимостьДоступностьЭлементовРеляционнаяОперация();
	ОбновитьВидимостьДоступностьЭлементовВыводИЗапретаВыводаСтрок();
	ОбновитьВидимостьДоступностьПорядкаСортировкиТаблицыРасхождений();
		
	ОбновитьКодДляВыводаИЗапретаВыводаСтрок();
		
КонецПроцедуры

&НаКлиенте
Процедура ОперацияНажатие(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Объект.РеляционнаяОперация = Число(Прав(Элемент.Имя,1));
	ОбновитьВидимостьДоступностьЭлементовРеляционнаяОперация();
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
	Если Не ЗакрытиеФормыПодтверждено Тогда
		Отказ = Истина;
		ПоказатьВопрос(Новый ОписаниеОповещения("ПередЗакрытиемЗавершение", ЭтаФорма),"Закрыть консоль сравнения данных?", РежимДиалогаВопрос.ДаНет);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	
	Если ЗначениеЗаполнено(Объект.СвязаннаяОперацияСравненияДанных) И Не Объект.ПользовательскийРежим  Тогда
		
		ПоказатьВопрос(Новый ОписаниеОповещения("СохранитьВСвязаннуюОперациюЗавершение", ЭтотОбъект, Новый Структура("ВыбратьЭлементСправочникаДляСохранения,СохранятьТабличныеДокументы,ПриЗакрытииФормы",Истина,Ложь,Истина)), "Обновить элемент справочника """ + Объект.СвязаннаяОперацияСравненияДанных + """?", РежимДиалогаВопрос.ДаНет);
	
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура ПосетитьСтраницу(КодВозврата, ДополнительныеПараметры) Экспорт
	
	

КонецПроцедуры

&НаКлиенте
Процедура КодДляВыводаСтрокРедактируетсяВручнуюПриИзменении(Элемент)
	
	Если Не Объект.КодДляВыводаСтрокРедактируетсяВручную Тогда
		
		ПоказатьВопрос(Новый ОписаниеОповещения("КодДляВыводаСтрокРедактируетсяВручнуюПриИзмененииЗавершение", ЭтаФорма), "Код, внесенный вручную будет утерян. Продолжить?", РежимДиалогаВопрос.ДаНет);
        Возврат;
		
	КонецЕсли;
	
	КодДляВыводаСтрокРедактируетсяВручнуюПриИзмененииФрагмент();
КонецПроцедуры

&НаКлиенте
Процедура КодДляВыводаСтрокРедактируетсяВручнуюПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
		Объект.КодДляВыводаСтрокРедактируетсяВручную = Истина;
		Возврат;
	КонецЕсли;
	
	
	КодДляВыводаСтрокРедактируетсяВручнуюПриИзмененииФрагмент();

КонецПроцедуры

&НаКлиенте
Процедура КодДляВыводаСтрокРедактируетсяВручнуюПриИзмененииФрагмент()
	
	ОбновитьКодДляВыводаИЗапретаВыводаСтрок();
	ОбновитьВидимостьДоступностьЭлементовВыводИЗапретаВыводаСтрок();

КонецПроцедуры

&НаКлиенте
Процедура КодДляЗапретаВыводаСтрокРедактируетсяВручнуюПриИзменении(Элемент)
	
	Если Не Объект.КодДляЗапретаВыводаСтрокРедактируетсяВручную Тогда
		
		ПоказатьВопрос(Новый ОписаниеОповещения("КодДляЗапретаВыводаСтрокРедактируетсяВручнуюПриИзмененииЗавершение", ЭтаФорма), "Код, внесенный вручную будет утерян. Продолжить?", РежимДиалогаВопрос.ДаНет);
        Возврат;
		
	КонецЕсли;
	
	КодДляЗапретаВыводаСтрокРедактируетсяВручнуюПриИзмененииФрагмент();
КонецПроцедуры

&НаКлиенте
Процедура КодДляЗапретаВыводаСтрокРедактируетсяВручнуюПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
		Объект.КодДляЗапретаВыводаСтрокРедактируетсяВручную = Истина;
		Возврат;
	КонецЕсли;
	
	
	КодДляЗапретаВыводаСтрокРедактируетсяВручнуюПриИзмененииФрагмент();

КонецПроцедуры

&НаКлиенте
Процедура КодДляЗапретаВыводаСтрокРедактируетсяВручнуюПриИзмененииФрагмент()
	
	ОбновитьКодДляВыводаИЗапретаВыводаСтрок();
	ОбновитьВидимостьДоступностьЭлементовВыводИЗапретаВыводаСтрок();

КонецПроцедуры

&НаКлиенте
Процедура УсловияВыводаСтрокПриИзменении(Элемент)
	ОбновитьКодДляВыводаИЗапретаВыводаСтрок();
КонецПроцедуры

&НаКлиенте
Процедура УсловияЗапретаВыводаСтрокПриИзменении(Элемент)
	ОбновитьКодДляВыводаИЗапретаВыводаСтрок();
КонецПроцедуры

&НаКлиенте
Процедура ЛогическийОператорДляУсловийЗапретаВыводаСтрокПриИзменении(Элемент)
	ОбновитьКодДляВыводаИЗапретаВыводаСтрок();
КонецПроцедуры

&НаКлиенте
Процедура ЛогическийОператорДляУсловийВыводаСтрокПриИзменении(Элемент)
	ОбновитьКодДляВыводаИЗапретаВыводаСтрок();
КонецПроцедуры

&НаКлиенте
Процедура КомандаВидимостьКолонкиТЧ(Команда)
	
	ИмяРеквизита = СтрЗаменить(Команда.Имя, "КомандаВидимость", "");
	
	Объект["Видимость" + ИмяРеквизита] = Не Объект["Видимость" + ИмяРеквизита];
	
	ОбновитьВидимостьРеквизитаТЧ(ИмяРеквизита);
		
КонецПроцедуры

&НаКлиенте
Процедура ТипПараметраПериодПриИзменении(Элемент)
	
	ОбновитьДанныеПериода();
	ОбновитьВидимостьДоступностьЭлементовФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗначениеОтносительногоПериодаПриИзменении(Элемент)
	
	ОбновитьДанныеПериода();
	
КонецПроцедуры

&НаКлиенте
Процедура ДискретностьОтносительногоПериодаПриИзменении(Элемент)
	
	ОбновитьДанныеПериода();
	
КонецПроцедуры

&НаКлиенте
Процедура ПодключениеКВнешнейБазеАПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	
	Если ПустаяСтрока(Объект.ПодключениеКВнешнейБазеАФорматФайла) Тогда
		ДиалогВыбораФайла.Фильтр = 
			"*.*" + 
			"|*.*";
	ИначеЕсли Объект.ПодключениеКВнешнейБазеАФорматФайла = "XLS" Или Объект.ПодключениеКВнешнейБазеАФорматФайла = "DOC" Тогда
		ДиалогВыбораФайла.Фильтр = 
			"*." + Объект.ПодключениеКВнешнейБазеАФорматФайла
			+ ";*." + Объект.ПодключениеКВнешнейБазеАФорматФайла + "X"
			+ "|*." + Объект.ПодключениеКВнешнейБазеАФорматФайла
			+ ";*." + Объект.ПодключениеКВнешнейБазеАФорматФайла + "X";
	Иначе
		ДиалогВыбораФайла.Фильтр = 
			"*." + Объект.ПодключениеКВнешнейБазеАФорматФайла + 
			"|*." + Объект.ПодключениеКВнешнейБазеАФорматФайла;
	КонецЕсли;
		
	ДиалогВыбораФайла.Заголовок = "Выберите файл";
	ДиалогВыбораФайла.ИндексФильтра = 0;
	ДиалогВыбораФайла.Показать(Новый ОписаниеОповещения("ПодключениеКВнешнейБазеАПутьКФайлуНачалоВыбораЗавершение", ЭтаФорма, Новый Структура("ДиалогВыбораФайла", ДиалогВыбораФайла)));
	
КонецПроцедуры

&НаКлиенте
Процедура ПодключениеКВнешнейБазеАПутьКФайлуНачалоВыбораЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	ДиалогВыбораФайла = ДополнительныеПараметры.ДиалогВыбораФайла;
	
	
	Если (ВыбранныеФайлы <> Неопределено) Тогда
		
		Объект.ПодключениеКВнешнейБазеАПутьКФайлу = ДиалогВыбораФайла.ПолноеИмяФайла;
		
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ПодключениеКВнешнейБазеБПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	
	Если ПустаяСтрока(Объект.ПодключениеКВнешнейБазеБФорматФайла) Тогда
		ДиалогВыбораФайла.Фильтр = 
			"*.*" + 
			"|*.*";
	ИначеЕсли Объект.ПодключениеКВнешнейБазеБФорматФайла = "XLS" Или Объект.ПодключениеКВнешнейБазеБФорматФайла = "DOC" Тогда
		ДиалогВыбораФайла.Фильтр = 
			"*." + Объект.ПодключениеКВнешнейБазеБФорматФайла
			+ ";*." + Объект.ПодключениеКВнешнейБазеБФорматФайла + "X"
			+ "|*." + Объект.ПодключениеКВнешнейБазеБФорматФайла
			+ ";*." + Объект.ПодключениеКВнешнейБазеБФорматФайла + "X";
	Иначе
		ДиалогВыбораФайла.Фильтр = 
			"*." + Объект.ПодключениеКВнешнейБазеБФорматФайла + 
			"|*." + Объект.ПодключениеКВнешнейБазеБФорматФайла;
	КонецЕсли;
		
	ДиалогВыбораФайла.Заголовок = "Выберите файл";
	ДиалогВыбораФайла.ИндексФильтра = 0;
	ДиалогВыбораФайла.Показать(Новый ОписаниеОповещения("ПодключениеКВнешнейБазеБПутьКФайлуНачалоВыбораЗавершение", ЭтаФорма, Новый Структура("ДиалогВыбораФайла", ДиалогВыбораФайла)));
	
КонецПроцедуры

&НаКлиенте
Процедура ПодключениеКВнешнейБазеБПутьКФайлуНачалоВыбораЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	ДиалогВыбораФайла = ДополнительныеПараметры.ДиалогВыбораФайла;
	
	
	Если (ВыбранныеФайлы <> Неопределено) Тогда
		
		Объект.ПодключениеКВнешнейБазеБПутьКФайлу = ДиалогВыбораФайла.ПолноеИмяФайла;
		
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура НастройкиФайлаАПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	
	Если Объект.НастройкиФайлаА.Количество() = 5 Тогда
		Отказ = Истина;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиФайлаБПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	
	Если Объект.НастройкиФайлаБ.Количество() = 5 Тогда
		Отказ = Истина;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриИзмененииКлючевогоРеквизита(Элемент)
	
	ОбновитьВидимостьДоступностьЭлементовФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура СписокПараметровАЗначениеПараметраНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Элементы.СписокПараметровАЗначениеПараметра.ВыбиратьТип = ТипЗнч(Элементы.СписокПараметровА.ТекущиеДанные.Значениепараметра) = Тип("Неопределено");	
	ПриНачалеВыбораЗначенияПараметра("А", СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура СписокПараметровАЗначениеПараметраПриИзменении(Элемент)
	
	ТекущийПараметр = Объект.СписокПараметровА.НайтиПоИдентификатору(Элементы.СписокПараметровА.ТекущиеДанные.ПолучитьИдентификатор());
	ТекущийПараметр.ТипПараметра = ТипЗнч(ТекущийПараметр.ЗначениеПараметра);

КонецПроцедуры

&НаКлиенте
Процедура СписокПараметровБЗначениеПараметраНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Элементы.СписокПараметровБЗначениеПараметра.ВыбиратьТип = ТипЗнч(Элементы.СписокПараметровБ.ТекущиеДанные.Значениепараметра) = Тип("Неопределено");	
	ПриНачалеВыбораЗначенияПараметра("Б", СтандартнаяОбработка);
		
КонецПроцедуры

&НаКлиенте
Процедура СписокПараметровБЗначениеПараметраПриИзменении(Элемент)
	
	ТекущийПараметр = Объект.СписокПараметровБ.НайтиПоИдентификатору(Элементы.СписокПараметровБ.ТекущиеДанные.ПолучитьИдентификатор());
	ТекущийПараметр.ТипПараметра = ТипЗнч(ТекущийПараметр.ЗначениеПараметра);
	
КонецПроцедуры

&НаКлиенте
Процедура ЧислоСтолбцовВКлючеПриИзменении(Элемент)
	
	Объект.ВидимостьКлюч1 = Истина;
	Объект.ВидимостьКлюч2 = Объект.ЧислоСтолбцовВКлюче > 1;
	Объект.ВидимостьКлюч3 = Объект.ЧислоСтолбцовВКлюче > 2;
	ОбновитьВидимостьДоступностьЭлементовФормы();
	ОбновитьВидимостьДоступностьЭлементовФормыПоИдентификаторуБазы("А");
	ОбновитьВидимостьДоступностьЭлементовФормыПоИдентификаторуБазы("Б");
	
КонецПроцедуры

&НаКлиенте
Процедура РезультатКлючНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
КонецПроцедуры

&НаКлиенте
Процедура РезультатКлюч2НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура РезультатКлюч3НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура РезультатКлючОчистка(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура РезультатКлюч2Очистка(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура РезультатКлюч3Очистка(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура ПриИзмененииФлагаВыполнятьПроизвольныйКодКлюча(Элемент)
	
	ОбновитьРеквизитыПроизвольныйКод();
	
КонецПроцедуры

&НаКлиенте
Процедура ОтображатьТипыСтолбцовКлючаПриИзменении(Элемент)
	
	ОбновитьВидимостьДоступностьЭлементовФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаВидимостьТиповСтолбцовКлюча(Команда)
	
	Элементы.РезультатКомандаВидимостьТиповСтолбцовКлюча.Пометка = Не Элементы.РезультатКомандаВидимостьТиповСтолбцовКлюча.Пометка;
	Объект.ОтображатьТипыСтолбцовКлюча = Элементы.РезультатКомандаВидимостьТиповСтолбцовКлюча.Пометка;
	Если Объект.ОтображатьТипыСтолбцовКлюча Тогда
		ЗаполнитьТипыСтолбцовКлючаВоВсехСтроках();
	КонецЕсли;
	ОбновитьВидимостьДоступностьЭлементовФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаВыгрузитьРезультатВФайлНаСервере(Команда)
	
	Если ПустаяСтрока(Объект.ФорматФайлаВыгрузки) Тогда
		СообщениеПользователю = Новый СообщениеПользователю;
		СообщениеПользователю.Поле = "Объект.ФорматФайлаВыгрузки";
		СообщениеПользователю.Текст = "Не задан формат файла выгрузки";
		СообщениеПользователю.Сообщить();
		Возврат;
	КонецЕсли;
	
	Если ПустаяСтрока(Объект.ПутьКФайлуВыгрузки) Тогда
		СообщениеПользователю = Новый СообщениеПользователю;
		СообщениеПользователю.Поле = "Объект.ПутьКФайлуВыгрузки";
		СообщениеПользователю.Текст = "Не задан путь к файлу выгрузки";
		СообщениеПользователю.Сообщить();
		Возврат;
	КонецЕсли;
			
	Ответ = Неопределено; 	
	ПоказатьВопрос(Новый ОписаниеОповещения("КомандаВыгрузитьРезультатВФайлНаСервереЗавершение", ЭтаФорма), "Выгрузить таблицу в файл на сервере?", РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, "Выгрузка");
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаВыгрузитьРезультатВФайлНаСервереЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	Ответ = РезультатВопроса; 
	Если Ответ = КодВозвратаДиалога.Нет Тогда
		Возврат;
	КонецЕсли;
	
	ВыгрузитьРезультатВФайлНаСервере(Ложь, ПредставленияЗаголовковРеквизитов);

КонецПроцедуры

&НаКлиенте
Процедура ПутьКФайлуВыгрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	Если ПустаяСтрока(Объект.ФорматФайлаВыгрузки) Тогда
		СообщениеПользователю = Новый СообщениеПользователю;
		СообщениеПользователю.Поле = "Объект.ФорматФайлаВыгрузки";
		СообщениеПользователю.Текст = "Не задан формат файла выгрузки";
		СообщениеПользователю.Сообщить();
		Возврат;
	КонецЕсли;
	
	Режим = РежимДиалогаВыбораФайла.Сохранение;
	ДиалогВыбора = Новый ДиалогВыбораФайла(Режим);
	ДиалогВыбора.ПолноеИмяФайла = Объект.Заголовок;
	Фильтр = "Файл " + Объект.ФорматФайлаВыгрузки + " (*." + Объект.ФорматФайлаВыгрузки + ")|*." + Объект.ФорматФайлаВыгрузки + "";
	ДиалогВыбора.Фильтр = Фильтр;
	ДиалогВыбора.Заголовок = "Укажите файл для сохранения результата сравнения";   

	ДиалогВыбора.Показать(Новый ОписаниеОповещения("ПутьКФайлуВыгрузкиНачалоВыбораЗавершение", ЭтаФорма, Новый Структура("ДиалогВыбора", ДиалогВыбора)));
	
КонецПроцедуры

&НаКлиенте
Процедура ПутьКФайлуВыгрузкиНачалоВыбораЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	
	ДиалогВыбора = ДополнительныеПараметры.ДиалогВыбора;	
	
	Если (ВыбранныеФайлы <> Неопределено) Тогда
		
		Объект.ПутьКФайлуВыгрузки =  ДиалогВыбора.ПолноеИмяФайла;
		
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура КомандаВыгрузитьРезультатВФайлНаКлиенте(Команда)
	
	Если ПустаяСтрока(Объект.ФорматФайлаВыгрузки) Тогда
		СообщениеПользователю = Новый СообщениеПользователю;
		СообщениеПользователю.Поле = "Объект.ФорматФайлаВыгрузки";
		СообщениеПользователю.Текст = "Не задан формат файла выгрузки";
		СообщениеПользователю.Сообщить();
		Возврат;
	КонецЕсли;
	
	ПоказатьВопрос(Новый ОписаниеОповещения("КомандаВыгрузитьРезультатВФайлНаКлиентеЗавершениеВопрос", ЭтаФорма), "Выгрузить таблицу в файл на клиенте?", РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Нет, "Выгрузка");
	
КонецПроцедуры

&НаКлиенте
Процедура ТипПериодаПриИзменении(Элемент)
	
	ОбновитьДанныеПериода();
	ОбновитьВидимостьДоступностьЭлементовФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗначениеПодчиненногоОтносительногоПериодаПриИзменении(Элемент)
	
	ОбновитьДанныеПериода();
	
КонецПроцедуры

&НаКлиенте
Процедура ДискретностьПодчиненногоОтносительногоПериодаПриИзменении(Элемент)
	
	ОбновитьДанныеПериода();
	
КонецПроцедуры

&НаКлиенте
Процедура ДискретностьОтносительногоПериодаОчистка(Элемент, СтандартнаяОбработка)
	
	Объект.ДискретностьОтносительногоПериода = "день";
	ОбновитьДанныеПериода();
	
КонецПроцедуры

&НаКлиенте
Процедура ДискретностьПодчиненногоОтносительногоПериодаОчистка(Элемент, СтандартнаяОбработка)
	
	Объект.ДискретностьПодчиненногоОтносительногоПериода = "день";
	ОбновитьДанныеПериода();
	
КонецПроцедуры

&НаКлиенте
Процедура УсловияВыводаСтрокОтключеныПриИзменении(Элемент)
	
	ОбновитьВидимостьДоступностьВкладкиУсловияВыводаСтрок();
	
КонецПроцедуры

&НаКлиенте
Процедура УсловияЗапретаВыводаСтрокОтключеныПриИзменении(Элемент)
	
	ОбновитьВидимостьДоступностьВкладкиУсловияЗапретаВыводаСтрок();
	
КонецПроцедуры

&НаКлиенте
Процедура СортироватьТаблицуРасхожденийПриИзменении(Элемент)
	
	ОбновитьВидимостьДоступностьПорядкаСортировкиТаблицыРасхождений();
		
КонецПроцедуры

&НаКлиенте
Процедура ПорядокСортировкиТаблицыРасхожденийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ВозвращаемоеЗначение = Неопределено;
	
	ОткрытьФорму(СтрЗаменить(ИмяФормы, "ФормаУправляемая", "ФормаНастройкиСортировки"), Новый Структура("ПорядокСортировкиТаблицыРасхождений", Объект.ПорядокСортировкиТаблицыРасхождений),,,,, Новый ОписаниеОповещения("ПорядокСортировкиТаблицыРасхожденийНачалоВыбораЗавершение", ЭтаФорма), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
	
КонецПроцедуры

&НаКлиенте
Процедура ПорядокСортировкиТаблицыРасхожденийНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	ВозвращаемоеЗначение = Результат;
	Если ВозвращаемоеЗначение <> Неопределено Тогда
		Объект.ПорядокСортировкиТаблицыРасхождений = ВозвращаемоеЗначение;
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура НастройкиФайлаБАгрегатнаяФункцияДляРасчетаИтогаОчистка(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	пТекущаяСтрока = Элементы.НастройкиФайлаБ.ТекущиеДанные;
	Если пТекущаяСтрока <> Неопределено Тогда
		пТекущаяСтрока.АгрегатнаяФункцияРасчетаИтога = "Сумма";
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиФайлаААгрегатнаяФункцияДляРасчетаИтогаОчистка(Элемент, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	пТекущаяСтрока = Элементы.НастройкиФайлаА.ТекущиеДанные;
	Если пТекущаяСтрока <> Неопределено Тогда
		пТекущаяСтрока.АгрегатнаяФункцияРасчетаИтога = "Сумма";
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура НастройкиФайлаАПриИзменении(Элемент)
	
	пТекущаяСтрока = Элементы.НастройкиФайлаА.ТекущиеДанные;
	Если пТекущаяСтрока <> Неопределено Тогда
		Если ПустаяСтрока(пТекущаяСтрока.АгрегатнаяФункцияРасчетаИтога) Тогда
			пТекущаяСтрока.АгрегатнаяФункцияРасчетаИтога = "Сумма";
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкиФайлаБПриИзменении(Элемент)
	
	пТекущаяСтрока = Элементы.НастройкиФайлаБ.ТекущиеДанные;
	Если пТекущаяСтрока <> Неопределено Тогда
		Если ПустаяСтрока(пТекущаяСтрока.АгрегатнаяФункцияРасчетаИтога) Тогда
			пТекущаяСтрока.АгрегатнаяФункцияРасчетаИтога = "Сумма";
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаПроверитьВозможностьПодключенияКИсточникуА(Команда)
	
	ПроверитьВозможностьПодключенияКИсточникуНаСервере("А");
	
КонецПроцедуры

&НаКлиенте
Процедура КомандаПроверитьВозможностьПодключенияКИсточникуБ(Команда)
	
	ПроверитьВозможностьПодключенияКИсточникуНаСервере("Б");
	
КонецПроцедуры

//@skip-warning
&НаКлиенте
Процедура Подключаемый_ВыполнитьОбщуюКомандуИнструментов(Команда) 
	УИ_ОбщегоНазначенияКлиент.Подключаемый_ВыполнитьОбщуюКомандуИнструментов(ЭтотОбъект, Команда);
КонецПроцедуры
#КонецОбласти

ЗакрытиеФормыПодтверждено = Ложь;
